Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 3a4ff8f

Browse files
committed
Java Sample Project for Hibernate One-to-Many Using Join Table XML Mapping
0 parents  commit 3a4ff8f

24 files changed

+349
-0
lines changed

.classpath

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<classpath>
3+
<classpathentry kind="src" path="src"/>
4+
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
5+
<classpathentry kind="lib" path="lib/antlr-2.7.7.jar"/>
6+
<classpathentry kind="lib" path="lib/dom4j-1.6.1.jar"/>
7+
<classpathentry kind="lib" path="lib/hibernate-commons-annotations-4.0.2.Final.jar"/>
8+
<classpathentry kind="lib" path="lib/hibernate-core-4.2.2.Final.jar"/>
9+
<classpathentry kind="lib" path="lib/hibernate-jpa-2.0-api-1.0.1.Final.jar"/>
10+
<classpathentry kind="lib" path="lib/javassist-3.15.0-GA.jar"/>
11+
<classpathentry kind="lib" path="lib/jboss-logging-3.1.0.GA.jar"/>
12+
<classpathentry kind="lib" path="lib/jboss-transaction-api_1.1_spec-1.0.1.Final.jar"/>
13+
<classpathentry kind="lib" path="lib/mysql-connector-java-5.1.25-bin.jar"/>
14+
<classpathentry kind="output" path="bin"/>
15+
</classpath>

.project

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<projectDescription>
3+
<name>HibernateOne2ManyJoinTableXMLExample</name>
4+
<comment></comment>
5+
<projects>
6+
</projects>
7+
<buildSpec>
8+
<buildCommand>
9+
<name>org.eclipse.jdt.core.javabuilder</name>
10+
<arguments>
11+
</arguments>
12+
</buildCommand>
13+
</buildSpec>
14+
<natures>
15+
<nature>org.eclipse.jdt.core.javanature</nature>
16+
</natures>
17+
</projectDescription>

bin/hibernate.cfg.xml

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<?xml version='1.0' encoding='utf-8'?>
2+
<!DOCTYPE hibernate-configuration PUBLIC
3+
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
4+
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
5+
<hibernate-configuration>
6+
<session-factory>
7+
<!-- Database connection settings -->
8+
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
9+
<property name="connection.url">jdbc:mysql://localhost:3306/newsdb</property>
10+
<property name="connection.username">root</property>
11+
<property name="connection.password">secret</property>
12+
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
13+
<property name="show_sql">true</property>
14+
15+
<mapping resource="net/codejava/hibernate/Category.hbm.xml"/>
16+
<mapping resource="net/codejava/hibernate/Article.hbm.xml"/>
17+
18+
</session-factory>
19+
</hibernate-configuration>
1.87 KB
Binary file not shown.
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!DOCTYPE hibernate-mapping PUBLIC
3+
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
4+
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
5+
<hibernate-mapping package="net.codejava.hibernate">
6+
<class name="Article" table="ARTICLE">
7+
<id name="id" column="ARTICLE_ID">
8+
<generator class="native"/>
9+
</id>
10+
<property name="title" column="TITLE" />
11+
<property name="description" column="DESCRIPTION" />
12+
<property name="keywords" column="KEYWORDS" />
13+
<property name="content" column="CONTENT" />
14+
15+
<join table="CategoryArticle" inverse="true">
16+
<key column="ARTICLE_ID"/>
17+
<many-to-one name="category" column="CATEGORY_ID" not-null="true"/>
18+
</join>
19+
</class>
20+
</hibernate-mapping>
2.93 KB
Binary file not shown.
1.29 KB
Binary file not shown.
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!DOCTYPE hibernate-mapping PUBLIC
3+
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
4+
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
5+
<hibernate-mapping package="net.codejava.hibernate">
6+
<class name="Category" table="CATEGORY">
7+
<id name="id" column="CATEGORY_ID">
8+
<generator class="native"/>
9+
</id>
10+
<property name="name" column="NAME" />
11+
12+
<set name="articles" table="CategoryArticle" cascade="all">
13+
<key column="CATEGORY_ID" not-null="true" />
14+
<many-to-many column="ARTICLE_ID" class="Article" unique="true"/>
15+
</set>
16+
</class>
17+
</hibernate-mapping>

lib/antlr-2.7.7.jar

435 KB
Binary file not shown.

lib/dom4j-1.6.1.jar

307 KB
Binary file not shown.
Binary file not shown.

lib/hibernate-core-4.2.2.Final.jar

4.41 MB
Binary file not shown.
100 KB
Binary file not shown.

lib/javassist-3.15.0-GA.jar

633 KB
Binary file not shown.

lib/jboss-logging-3.1.0.GA.jar

59.3 KB
Binary file not shown.
Binary file not shown.
829 KB
Binary file not shown.

sql/MySQLscript.sql

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
CREATE DATABASE `newsdb`;
2+
3+
use newsdb;
4+
5+
CREATE TABLE `category` (
6+
`category_id` int(11) NOT NULL AUTO_INCREMENT,
7+
`name` varchar(45) NOT NULL,
8+
PRIMARY KEY (`category_id`)
9+
);
10+
11+
12+
CREATE TABLE `article` (
13+
`article_id` int(11) NOT NULL AUTO_INCREMENT,
14+
`title` varchar(70) NOT NULL,
15+
`description` varchar(250) NOT NULL,
16+
`keywords` varchar(150) NOT NULL,
17+
`content` text NOT NULL,
18+
PRIMARY KEY (`article_id`)
19+
);
20+
21+
22+
CREATE TABLE `categoryarticle` (
23+
`category_id` int(11) NOT NULL,
24+
`article_id` int(11) NOT NULL,
25+
PRIMARY KEY (`category_id`,`article_id`),
26+
KEY `fk_category` (`category_id`),
27+
KEY `fk_article` (`article_id`),
28+
CONSTRAINT `fk_article` FOREIGN KEY (`article_id`) REFERENCES `article` (`article_id`),
29+
CONSTRAINT `fk_category` FOREIGN KEY (`category_id`) REFERENCES `category` (`category_id`)
30+
);

src/hibernate.cfg.xml

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<?xml version='1.0' encoding='utf-8'?>
2+
<!DOCTYPE hibernate-configuration PUBLIC
3+
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
4+
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
5+
<hibernate-configuration>
6+
<session-factory>
7+
<!-- Database connection settings -->
8+
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
9+
<property name="connection.url">jdbc:mysql://localhost:3306/newsdb</property>
10+
<property name="connection.username">root</property>
11+
<property name="connection.password">secret</property>
12+
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
13+
<property name="show_sql">true</property>
14+
15+
<mapping resource="net/codejava/hibernate/Category.hbm.xml"/>
16+
<mapping resource="net/codejava/hibernate/Article.hbm.xml"/>
17+
18+
</session-factory>
19+
</hibernate-configuration>
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!DOCTYPE hibernate-mapping PUBLIC
3+
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
4+
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
5+
<hibernate-mapping package="net.codejava.hibernate">
6+
<class name="Article" table="ARTICLE">
7+
<id name="id" column="ARTICLE_ID">
8+
<generator class="native"/>
9+
</id>
10+
<property name="title" column="TITLE" />
11+
<property name="description" column="DESCRIPTION" />
12+
<property name="keywords" column="KEYWORDS" />
13+
<property name="content" column="CONTENT" />
14+
15+
<join table="CategoryArticle" inverse="true">
16+
<key column="ARTICLE_ID"/>
17+
<many-to-one name="category" column="CATEGORY_ID" not-null="true"/>
18+
</join>
19+
</class>
20+
</hibernate-mapping>
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
package net.codejava.hibernate;
2+
3+
public class Article {
4+
private long id;
5+
private String title;
6+
private String description;
7+
private String keywords;
8+
private String content;
9+
10+
private Category category;
11+
12+
public Article() {
13+
}
14+
15+
public Article(String title, String description, String keywords,
16+
String content, Category category) {
17+
this.title = title;
18+
this.description = description;
19+
this.keywords = keywords;
20+
this.content = content;
21+
this.category = category;
22+
}
23+
24+
public long getId() {
25+
return id;
26+
}
27+
28+
public void setId(long id) {
29+
this.id = id;
30+
}
31+
32+
public String getTitle() {
33+
return title;
34+
}
35+
36+
public void setTitle(String title) {
37+
this.title = title;
38+
}
39+
40+
public String getDescription() {
41+
return description;
42+
}
43+
44+
public void setDescription(String description) {
45+
this.description = description;
46+
}
47+
48+
public String getKeywords() {
49+
return keywords;
50+
}
51+
52+
public void setKeywords(String keywords) {
53+
this.keywords = keywords;
54+
}
55+
56+
public String getContent() {
57+
return content;
58+
}
59+
60+
public void setContent(String content) {
61+
this.content = content;
62+
}
63+
64+
public Category getCategory() {
65+
return category;
66+
}
67+
68+
public void setCategory(Category category) {
69+
this.category = category;
70+
}
71+
72+
}
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
package net.codejava.hibernate;
2+
3+
import java.util.HashSet;
4+
import java.util.Set;
5+
6+
import org.hibernate.Session;
7+
import org.hibernate.SessionFactory;
8+
import org.hibernate.cfg.Configuration;
9+
import org.hibernate.service.ServiceRegistry;
10+
import org.hibernate.service.ServiceRegistryBuilder;
11+
12+
/**
13+
* This program demonstrates how to use Hibernate framework to manage
14+
* a one-to-many association on a join table.
15+
* @author www.codejava.net
16+
*
17+
*/
18+
public class ArticlesManager {
19+
20+
public static void main(String[] args) {
21+
// loads configuration and mappings
22+
Configuration configuration = new Configuration().configure();
23+
ServiceRegistryBuilder registry = new ServiceRegistryBuilder();
24+
registry.applySettings(configuration.getProperties());
25+
ServiceRegistry serviceRegistry = registry.buildServiceRegistry();
26+
27+
// builds a session factory from the service registry
28+
SessionFactory sessionFactory = configuration
29+
.buildSessionFactory(serviceRegistry);
30+
31+
// obtains the session
32+
Session session = sessionFactory.openSession();
33+
session.beginTransaction();
34+
35+
Category category = new Category("Hibernate Framework");
36+
37+
Article articleOne = new Article("One-to-One Mapping",
38+
"One-to-One XML Mapping Tutorial", "Hibernate,One-to-One",
39+
"Content of One-to-One XML Mapping Tutorial", category);
40+
Article articleTwo = new Article("One-to-Many Mapping",
41+
"One-to-Many XML Mapping Tutorial", "Hibernate,One-to-Many",
42+
"Content of One-to-Many XML Mapping Tutorial", category);
43+
Article articleThree = new Article("Many-to-Many Mapping",
44+
"Many-to-Many XML Mapping Tutorial", "Hibernate,Many-to-Many",
45+
"Content of Many-to-Many XML Mapping Tutorial", category);
46+
47+
Set<Article> articles = new HashSet<Article>();
48+
articles.add(articleOne);
49+
articles.add(articleTwo);
50+
articles.add(articleThree);
51+
52+
category.setArticles(articles);
53+
54+
session.save(category);
55+
56+
session.getTransaction().commit();
57+
session.close();
58+
}
59+
60+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!DOCTYPE hibernate-mapping PUBLIC
3+
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
4+
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
5+
<hibernate-mapping package="net.codejava.hibernate">
6+
<class name="Category" table="CATEGORY">
7+
<id name="id" column="CATEGORY_ID">
8+
<generator class="native"/>
9+
</id>
10+
<property name="name" column="NAME" />
11+
12+
<set name="articles" table="CategoryArticle" cascade="all">
13+
<key column="CATEGORY_ID" not-null="true" />
14+
<many-to-many column="ARTICLE_ID" class="Article" unique="true"/>
15+
</set>
16+
</class>
17+
</hibernate-mapping>
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package net.codejava.hibernate;
2+
3+
import java.util.Set;
4+
5+
public class Category {
6+
7+
private long id;
8+
private String name;
9+
10+
private Set<Article> articles;
11+
12+
public Category() {
13+
}
14+
15+
public Category(String name) {
16+
this.name = name;
17+
}
18+
19+
public long getId() {
20+
return id;
21+
}
22+
23+
public void setId(long id) {
24+
this.id = id;
25+
}
26+
27+
public String getName() {
28+
return name;
29+
}
30+
31+
public void setName(String name) {
32+
this.name = name;
33+
}
34+
35+
public Set<Article> getArticles() {
36+
return articles;
37+
}
38+
39+
public void setArticles(Set<Article> articles) {
40+
this.articles = articles;
41+
}
42+
43+
}

0 commit comments

Comments
 (0)