Hibernate 学习笔记(二)-- 实体映射
2010-05-06 13:14
483 查看
准备:建表
用MySQL在名为STMS数据库中建表persons
src/org.lxh.hibernate.Contact.java
1
package
org.lxh.hibernate;
2
3
/** */
/**
4
*
@author
∪∩BUG E-mail: tidelgl@163.com
5
*
@version
Aug 30, 2008 8:02:48 PM
6
*/
7
public
class
Contact
{
8
9
private
String address;
10
private
String zipcode;
11
private
String tel;
12
13
public
String getAddress()
{
14
return
address;
15
}
16
17
public
void
setAddress(String address)
{
18
this
.address
=
address;
19
}
20
21
public
String getZipcode()
{
22
return
zipcode;
23
}
24
25
public
void
setZipcode(String zipcode)
{
26
this
.zipcode
=
zipcode;
27
}
28
29
public
String getTel()
{
30
return
tel;
31
}
32
33
public
void
setTel(String tel)
{
34
this
.tel
=
tel;
35
}
36
37
}
38
src/org.lxh.hibernate.Name.java
1
package
org.lxh.hibernate;
2
3
/** */
/**
4
*
@author
∪∩BUG E-mail: tidelgl@163.com
5
*
@version
Aug 30, 2008 7:59:53 PM
6
*/
7
public
class
Name
{
8
9
private
String firstname;
10
private
String lastname;
11
12
public
String getFirstname()
{
13
return
firstname;
14
}
15
16
public
void
setFirstname(String firstname)
{
17
this
.firstname
=
firstname;
18
}
19
20
public
String getLastname()
{
21
return
lastname;
22
}
23
24
public
void
setLastname(String lastname)
{
25
this
.lastname
=
lastname;
26
}
27
28
}
29
src/org.lxh.hibernate.Persons.java
1
package
org.lxh.hibernate;
2
/** */
/**
3
*
@author
∪∩BUG E-mail: tidelgl@163.com
4
*
@version
Aug 30, 2008 8:04:57 PM
5
* @本类包含Nane类和Contact类
6
*/
7
public
class
Persons
{
8
private
int
id;
9
private
Name name;
10
private
Contact contact;
11
12
public
int
getId()
{
13
return
id;
14
}
15
16
public
void
setId(
int
id)
{
17
this
.id
=
id;
18
}
19
20
public
Name getName()
{
21
return
name;
22
}
23
24
public
void
setName(Name name)
{
25
this
.name
=
name;
26
}
27
28
public
Contact getContact()
{
29
return
contact;
30
}
31
32
public
void
setContact(Contact contact)
{
33
this
.contact
=
contact;
34
}
35
36
}
37
src/org.lxh.hibernate.PersonsOperate.java
1
package
org.lxh.hibernate;
2
3
import
java.util.List;
4
5
import
org.hibernate.Query;
6
import
org.hibernate.Session;
7
import
org.hibernate.SessionFactory;
8
import
org.hibernate.cfg.Configuration;
9
10
/** */
/**
11
*
@author
∪∩BUG E-mail: tidelgl@163.com
12
*
@version
Aug 30, 2008 8:55:43 PM @ 具
体操作Hibernate的类
13
*/
14
public
class
PersonsOperate
{
15
//
在
Hibernate中所有的操作都是通过Session来完成
16
private
Session session;
17
18
//
Session 是
一个接口,必须实例化
19
//
在构造方法中实例实
化Session对象
20
public
PersonsOperate()
{
21
//
找到
Hibernae配置文件
22
Configuration config
=
new
Configuration().configure();
23
24
//
从全局文件
中取出SessionFactory
25
SessionFactory factory
=
config.buildSessionFactory();
26
27
//
从
sessionFactory中取出一个session
28
this
.session
=
factory.openSession();
29
}
30
31
//
所有的操作都是通过
Session进行
32
//
(1)增加操作
33
public
void
insert(Persons p)
{
34
//
将数据存放
到数据库中
35
this
.session.save(p);
36
37
//
事务提交
38
this
.session.beginTransaction().commit();
39
}
40
41
//
通过HQL查询全部
数据
42
public
List queryAll()
{
43
String hql
=
"
FROM Persons as p
"
;
44
Query q
=
this
.session.createQuery(hql);
45
List l
=
q.list();
46
return
l;
47
}
48
}
49
src/org.lxh.hibernate.Persons.hbm.xml
1
xml version="1.0" encoding="utf-8"
?>
2
DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
3
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"
>
4
7
<
hibernate-mapping
>
8
<
class
name
="org.lxh.hibernate.Persons"
table
="persons"
9
catalog
="stms"
>
10
<
id
name
="id"
type
="java.lang.Integer"
>
11
<
column
name
="id"
/>
12
<
generator
class
="assigned"
/>
13
id
>
14
19
<
component
name
="name"
class
="org.lxh.hibernate.Name"
>
20
<
property
name
="firstname"
type
="java.lang.String"
>
21
<
column
name
="firstname"
length
="20"
not-null
="true"
/>
22
property
>
23
<
property
name
="lastname"
type
="java.lang.String"
>
24
<
column
name
="lastname"
length
="20"
not-null
="true"
/>
25
property
>
26
component
>
27
<
component
name
="contact"
class
="org.lxh.hibernate.Contact"
>
28
29
<
property
name
="address"
type
="java.lang.String"
>
30
<
column
name
="address"
length
="20"
not-null
="true"
/>
31
property
>
32
<
property
name
="zipcode"
type
="java.lang.String"
>
33
<
column
name
="zipcode"
length
="6"
not-null
="true"
/>
34
property
>
35
<
property
name
="tel"
type
="java.lang.String"
>
36
<
column
name
="tel"
length
="20"
/>
37
property
>
38
component
>
39
class
>
40
hibernate-mapping
>
41
src/org.lxh.hibernate.TestDemo.java
1
package
org.lxh.hibernate;
2
3
import
java.util.Iterator;
4
import
java.util.List;
5
6
import
sun.security.action.GetBooleanAction;
7
8
/** */
/**
9
*
@author
∪∩BUG E-mail: tidelgl@163.com
10
*
@version
Aug 30, 2008 8:55:03 PM
11
* @测试类
12
*/
13
public
class
TestDemo
{
14
15
/** */
/**
16
*
@param
args
17
*/
18
public
static
void
main(String[] args)
{
19
20
PersonsOperate po
=
new
PersonsOperate();
21
/**/
/*
22
//测试插入数据
23
Persons p = new Persons();
24
Name n = new Name();
25
Contact c = new Contact();
26
27
n.setFirstname("My");
28
n.setLastname("SQL");
29
30
c.setAddress("mysql.com");
31
c.setTel("12345678");
32
c.setZipcode("54321");
33
34
p.setId(1);
35
p.setName(n);
36
p.setContact(c);
37
38
po.insert(p);
39
*/
40
41
//
测试
查询全部数据
42
List l
=
po.queryAll();
43
Iterator iter
=
l.iterator();
44
while
(iter.hasNext())
{
45
Persons p
=
(Persons)iter.next();
46
System.out.println(
"
ID:/t
"
+
p.getId());
47
System.out.println(
"
FIRSTNAME:/t
"
+
p.getName().getFirstname());
48
System.out.println(
"
LASTNAME:/t
"
+
p.getName().getLastname());
49
System.out.println(
"
ADDRESS:/t
"
+
p.getContact().getAddress());
50
System.out.println(
"
TEL:/t
"
+
p.getContact().getTel());
51
System.out.println(
"
ZIPCODE:/t
"
+
p.getContact().getZipcode());
52
System.out.println(
"
----------------------------------------------
"
);
53
}
54
}
55
56
}
57
src/hibernate.cfg.xml
1
xml version='1.0' encoding='UTF-8'
?>
2
DOCTYPE hibernate-configuration PUBLIC
3
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
4
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"
>
5
6
7
<
hibernate-configuration
>
8
9
<
session-factory
>
10
<
property
name
="connection.username"
>
root
property
>
11
<
property
name
="connection.url"
>
12
jdbc:mysql://localhost:3306/STMS
13
property
>
14
<
property
name
="dialect"
>
15
org.hibernate.dialect.MySQLDialect
16
property
>
17
<
property
name
="myeclipse.connection.profile"
>
18
MySql_localhost
19
property
>
20
<
property
name
="connection.password"
>
root
property
>
21
<
property
name
="connection.driver_class"
>
22
com.mysql.jdbc.Driver
23
property
>
24
<
property
name
="show_sql"
>
true
property
>
25
26
27
<
mapping
resource
="org/lxh/hibernate/Persons.hbm.xml"
/>
28
29
session-factory
>
30
31
hibernate-configuration
>
例子结构:
用MySQL在名为STMS数据库中建表persons
src/org.lxh.hibernate.Contact.java
1
package
org.lxh.hibernate;
2
3
/** */
/**
4
*
@author
∪∩BUG E-mail: tidelgl@163.com
5
*
@version
Aug 30, 2008 8:02:48 PM
6
*/
7
public
class
Contact
{
8
9
private
String address;
10
private
String zipcode;
11
private
String tel;
12
13
public
String getAddress()
{
14
return
address;
15
}
16
17
public
void
setAddress(String address)
{
18
this
.address
=
address;
19
}
20
21
public
String getZipcode()
{
22
return
zipcode;
23
}
24
25
public
void
setZipcode(String zipcode)
{
26
this
.zipcode
=
zipcode;
27
}
28
29
public
String getTel()
{
30
return
tel;
31
}
32
33
public
void
setTel(String tel)
{
34
this
.tel
=
tel;
35
}
36
37
}
38
src/org.lxh.hibernate.Name.java
1
package
org.lxh.hibernate;
2
3
/** */
/**
4
*
@author
∪∩BUG E-mail: tidelgl@163.com
5
*
@version
Aug 30, 2008 7:59:53 PM
6
*/
7
public
class
Name
{
8
9
private
String firstname;
10
private
String lastname;
11
12
public
String getFirstname()
{
13
return
firstname;
14
}
15
16
public
void
setFirstname(String firstname)
{
17
this
.firstname
=
firstname;
18
}
19
20
public
String getLastname()
{
21
return
lastname;
22
}
23
24
public
void
setLastname(String lastname)
{
25
this
.lastname
=
lastname;
26
}
27
28
}
29
src/org.lxh.hibernate.Persons.java
1
package
org.lxh.hibernate;
2
/** */
/**
3
*
@author
∪∩BUG E-mail: tidelgl@163.com
4
*
@version
Aug 30, 2008 8:04:57 PM
5
* @本类包含Nane类和Contact类
6
*/
7
public
class
Persons
{
8
private
int
id;
9
private
Name name;
10
private
Contact contact;
11
12
public
int
getId()
{
13
return
id;
14
}
15
16
public
void
setId(
int
id)
{
17
this
.id
=
id;
18
}
19
20
public
Name getName()
{
21
return
name;
22
}
23
24
public
void
setName(Name name)
{
25
this
.name
=
name;
26
}
27
28
public
Contact getContact()
{
29
return
contact;
30
}
31
32
public
void
setContact(Contact contact)
{
33
this
.contact
=
contact;
34
}
35
36
}
37
src/org.lxh.hibernate.PersonsOperate.java
1
package
org.lxh.hibernate;
2
3
import
java.util.List;
4
5
import
org.hibernate.Query;
6
import
org.hibernate.Session;
7
import
org.hibernate.SessionFactory;
8
import
org.hibernate.cfg.Configuration;
9
10
/** */
/**
11
*
@author
∪∩BUG E-mail: tidelgl@163.com
12
*
@version
Aug 30, 2008 8:55:43 PM @ 具
体操作Hibernate的类
13
*/
14
public
class
PersonsOperate
{
15
//
在
Hibernate中所有的操作都是通过Session来完成
16
private
Session session;
17
18
//
Session 是
一个接口,必须实例化
19
//
在构造方法中实例实
化Session对象
20
public
PersonsOperate()
{
21
//
找到
Hibernae配置文件
22
Configuration config
=
new
Configuration().configure();
23
24
//
从全局文件
中取出SessionFactory
25
SessionFactory factory
=
config.buildSessionFactory();
26
27
//
从
sessionFactory中取出一个session
28
this
.session
=
factory.openSession();
29
}
30
31
//
所有的操作都是通过
Session进行
32
//
(1)增加操作
33
public
void
insert(Persons p)
{
34
//
将数据存放
到数据库中
35
this
.session.save(p);
36
37
//
事务提交
38
this
.session.beginTransaction().commit();
39
}
40
41
//
通过HQL查询全部
数据
42
public
List queryAll()
{
43
String hql
=
"
FROM Persons as p
"
;
44
Query q
=
this
.session.createQuery(hql);
45
List l
=
q.list();
46
return
l;
47
}
48
}
49
src/org.lxh.hibernate.Persons.hbm.xml
1
xml version="1.0" encoding="utf-8"
?>
2
DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
3
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"
>
4
7
<
hibernate-mapping
>
8
<
class
name
="org.lxh.hibernate.Persons"
table
="persons"
9
catalog
="stms"
>
10
<
id
name
="id"
type
="java.lang.Integer"
>
11
<
column
name
="id"
/>
12
<
generator
class
="assigned"
/>
13
id
>
14
19
<
component
name
="name"
class
="org.lxh.hibernate.Name"
>
20
<
property
name
="firstname"
type
="java.lang.String"
>
21
<
column
name
="firstname"
length
="20"
not-null
="true"
/>
22
property
>
23
<
property
name
="lastname"
type
="java.lang.String"
>
24
<
column
name
="lastname"
length
="20"
not-null
="true"
/>
25
property
>
26
component
>
27
<
component
name
="contact"
class
="org.lxh.hibernate.Contact"
>
28
29
<
property
name
="address"
type
="java.lang.String"
>
30
<
column
name
="address"
length
="20"
not-null
="true"
/>
31
property
>
32
<
property
name
="zipcode"
type
="java.lang.String"
>
33
<
column
name
="zipcode"
length
="6"
not-null
="true"
/>
34
property
>
35
<
property
name
="tel"
type
="java.lang.String"
>
36
<
column
name
="tel"
length
="20"
/>
37
property
>
38
component
>
39
class
>
40
hibernate-mapping
>
41
src/org.lxh.hibernate.TestDemo.java
1
package
org.lxh.hibernate;
2
3
import
java.util.Iterator;
4
import
java.util.List;
5
6
import
sun.security.action.GetBooleanAction;
7
8
/** */
/**
9
*
@author
∪∩BUG E-mail: tidelgl@163.com
10
*
@version
Aug 30, 2008 8:55:03 PM
11
* @测试类
12
*/
13
public
class
TestDemo
{
14
15
/** */
/**
16
*
@param
args
17
*/
18
public
static
void
main(String[] args)
{
19
20
PersonsOperate po
=
new
PersonsOperate();
21
/**/
/*
22
//测试插入数据
23
Persons p = new Persons();
24
Name n = new Name();
25
Contact c = new Contact();
26
27
n.setFirstname("My");
28
n.setLastname("SQL");
29
30
c.setAddress("mysql.com");
31
c.setTel("12345678");
32
c.setZipcode("54321");
33
34
p.setId(1);
35
p.setName(n);
36
p.setContact(c);
37
38
po.insert(p);
39
*/
40
41
//
测试
查询全部数据
42
List l
=
po.queryAll();
43
Iterator iter
=
l.iterator();
44
while
(iter.hasNext())
{
45
Persons p
=
(Persons)iter.next();
46
System.out.println(
"
ID:/t
"
+
p.getId());
47
System.out.println(
"
FIRSTNAME:/t
"
+
p.getName().getFirstname());
48
System.out.println(
"
LASTNAME:/t
"
+
p.getName().getLastname());
49
System.out.println(
"
ADDRESS:/t
"
+
p.getContact().getAddress());
50
System.out.println(
"
TEL:/t
"
+
p.getContact().getTel());
51
System.out.println(
"
ZIPCODE:/t
"
+
p.getContact().getZipcode());
52
System.out.println(
"
----------------------------------------------
"
);
53
}
54
}
55
56
}
57
src/hibernate.cfg.xml
1
xml version='1.0' encoding='UTF-8'
?>
2
DOCTYPE hibernate-configuration PUBLIC
3
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
4
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"
>
5
6
7
<
hibernate-configuration
>
8
9
<
session-factory
>
10
<
property
name
="connection.username"
>
root
property
>
11
<
property
name
="connection.url"
>
12
jdbc:mysql://localhost:3306/STMS
13
property
>
14
<
property
name
="dialect"
>
15
org.hibernate.dialect.MySQLDialect
16
property
>
17
<
property
name
="myeclipse.connection.profile"
>
18
MySql_localhost
19
property
>
20
<
property
name
="connection.password"
>
root
property
>
21
<
property
name
="connection.driver_class"
>
22
com.mysql.jdbc.Driver
23
property
>
24
<
property
name
="show_sql"
>
true
property
>
25
26
27
<
mapping
resource
="org/lxh/hibernate/Persons.hbm.xml"
/>
28
29
session-factory
>
30
31
hibernate-configuration
>
例子结构:
相关文章推荐
- Hibernate 3.2 学习笔记 映射实体关联关系
- Hibernate系列学习之映射持久化类--Hibernate中实体类型和值类型概念辨析
- [原创]java WEB学习笔记87:Hibernate学习之路-- -映射 继承关系(subclass , joined-subclass,union-subclass )
- Hibernate学习笔记_关系映射_树状结构练习
- Hibernate学习笔记 单表映射
- Hibernate学习之 -- 使用Middlegen-Hibernate-r5创建oracle10g的table的hibernate映射文件,Hibernate学习笔记三 ---持久化类和关系数据
- hibernate学习笔记【一对多双向映射】
- Hibernate学习笔记----组件映射
- hibernate 关联映射学习备忘笔记
- Hibernate 学习笔记07 --集合映射_&_继承映射
- Hibernate学习笔记之ORM实体间关系“OneToOne”详解
- Hibernate学习笔记(五)映射组件属性
- 【学习笔记】Hibernate实例多对多映射以及测试
- hibernate 实体关系映射笔记(转载自51)
- Hibernate实体映射笔记
- Hibernate实体映射笔记
- Hibernate视频学习笔记(3)常用映射标签及属性
- Hibernate学习笔记 2 - 关系映射配置
- Hibernate学习笔记 3 - 关系映射配置(基于注解)
- Hibernate 学习笔记(五)-- 实体层设计之Table per class hierarchy