Hibernate 学习笔记(二)-- 实体映射
准备:建表
用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
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
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
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
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
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
//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 >
例子结构:
还没有评论,来说两句吧...