Hibernate中的 一对一关联
2016-10-27 11:54
78 查看
Hibernate中的一对一关联
这里以人和身份证为例。
1.创建一个java project
2.添加hibernate常用的jar包和mysql的驱动包
hibernate核心包:
hibernate常用的38个jar包:
MySql驱动包:
3.添加两个配置文件hibernate.cfg.xml和log4j.properties
hibernate.cfg.xml
log4j.properties
4.创建实体类User和Card
User.java
Card.java
5.配置映射文件
User.hbm.xml
注意:cascade="save-update"表示当保存或者修改user的时候,级联的保存和它相关的card也保存或修改
Card.hbm.xml
6.创建util工具类(创建表)
CreateTable.java
首先,在数据库中新建一个数据库“o2odb”,名称与hibernate.cfg.xml文件中数据库名称相同。
然后,运行CreateTable.java
自动生成了两张表:
7.创建测试类TestO2O.java
首先,加测试用的jar包
选中工程,右键-->Build Path -->Add Libraries... -- >选择JUnit ---> 点击Finish --- >添加成功
TestO2O.java
运行结果:
查看数据库中的数据:
这里以人和身份证为例。
1.创建一个java project
2.添加hibernate常用的jar包和mysql的驱动包
hibernate核心包:
hibernate常用的38个jar包:
MySql驱动包:
3.添加两个配置文件hibernate.cfg.xml和log4j.properties
hibernate.cfg.xml
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory name="foo"> <property name="hibernate.connection.driver_class">org.gjt.mm.mysql.Driver</property> <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/o2odb</property> <property name="hibernate.connection.username">root</property> <property name="hibernate.connection.password">ok</property> <property name="format_sql">true</property> <property name="show_sql">true</property> <property name="dialect">org.hibernate.dialect.MySQLDialect</property> <mapping resource="com/yyz/hibernate/o2o/pojo/User.hbm.xml"/> <mapping resource="com/yyz/hibernate/o2o/pojo/Card.hbm.xml"/> </session-factory> </hibernate-configuration>
log4j.properties
log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target=System.out log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n log4j.rootLogger=warn, stdout log4j.logger.org.hibernate=debug log4j.logger.org.hibernate.type=info log4j.logger.org.hibernate.tool.hbm2ddl=debug
4.创建实体类User和Card
User.java
package com.yyz.hibernate.o2o.pojo; public class User { private String id; private String uname; private int age; private String address; private Card card; public User(){ } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getUname() { return uname; } public void setUname(String uname) { this.uname = uname; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public Card getCard() { return card; } public void setCard(Card card) { this.card = card; } }
Card.java
package com.yyz.hibernate.o2o.pojo; public class Card { private String cid; private String cardNo; private User user; public Card(){ } public String getCid() { return cid; } public void setCid(String cid) { this.cid = cid; } public String getCardNo() { return cardNo; } public void setCardNo(String cardNo) { this.cardNo = cardNo; } public User getUser() { return user; } public void setUser(User user) { this.user = user; } }
5.配置映射文件
User.hbm.xml
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="com.yyz.hibernate.o2o.pojo"> <class name="User" table="t_user"> <id name="id" column="id"> <generator class="uuid"/> </id> <property name="uname"/> <property name="age"/> <property name="address"/> <one-to-one name="card" cascade="save-update"/> </class> </hibernate-mapping>
注意:cascade="save-update"表示当保存或者修改user的时候,级联的保存和它相关的card也保存或修改
Card.hbm.xml
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="com.yyz.hibernate.o2o.pojo"> <class name="Card" table="t_card"> <id name="cid" column="cid"> <generator class="foreign"> <param name="property">user</param> </generator> </id> <property name="cardNo"/> <one-to-one name="user" constrained="true" /> </class> </hibernate-mapping>
6.创建util工具类(创建表)
CreateTable.java
package com.yyz.hibernate.util; import org.hibernate.cfg.Configuration; import org.hibernate.tool.hbm2ddl.SchemaExport; public class CreateTable { public static void main(String[] args){ Configuration cfg = new Configuration().configure(); SchemaExport se = new SchemaExport(cfg); se.create(true, true); } }
首先,在数据库中新建一个数据库“o2odb”,名称与hibernate.cfg.xml文件中数据库名称相同。
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/o2odb</property>
然后,运行CreateTable.java
自动生成了两张表:
7.创建测试类TestO2O.java
首先,加测试用的jar包
选中工程,右键-->Build Path -->Add Libraries... -- >选择JUnit ---> 点击Finish --- >添加成功
TestO2O.java
package com.yyz.hibernate.o2o.test; import junit.framework.TestCase; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; import com.yyz.hibernate.o2o.pojo.Card; import com.yyz.hibernate.o2o.pojo.User; public class TestO2O extends TestCase { private Session session ; @Override protected void setUp() throws Exception { System.out.println("开始测试...."); Configuration cfg = new Configuration().configure(); SessionFactory factory = cfg.buildSessionFactory(); session = factory.openSession(); } public void test01(){ User user = new User("kobe",35,"洛杉矶"); Card card = new Card("321201199349193499"); user.setCard(card); card.setUser(user); session.save(user); } @Override protected void tearDown() throws Exception { System.out.println("测试结束....."); session.beginTransaction().commit(); } }
运行结果:
查看数据库中的数据:
相关文章推荐
- Hibernate中一对一关联实例
- (Hibernate进阶)Hibernate映射——一对一单向关联映射(五)
- Hibernate 一对一连接表单向关联
- ORM框架Hibernate (四) 一对一单向、双向关联映射
- Hibernate一对一外键双向关联(Annotation配置篇)
- Hibernate之对象关系映射04一对一双向关联
- hibernate一对一外键关联映射
- Hibernate 一对一共享主键关联的例子
- 【Hibernate】--一对一关联、联合主键
- Hibernate 一对一外键单向关联
- Hibernate一对一主键关联
- hibernate 数据关联一对一 3.2
- hibernate---->一对一关联映射 (one-to-one)
- 千山万水之Hibernate(五)——关联映射(一对一)
- Hibernate单向一对一关联
- hibernate--一对一联合主键外键关联
- Hibernate学习12 -- 关联映射2 -- 一对一关联1 -- 一对一主键关联
- Hibernate 一对一外键双向关联
- 【Hibernate步步为营】--双向关联一对一映射详解(二)
- hibernate一对一主键关联_单向