hibernate一对一
来源:互联网 发布:tecplot处理fluent数据 编辑:程序博客网 时间:2024/04/28 06:58
使用人和身份证举例说明一对一关联,一对一有两种方式,一种是基于主键,另一种是基于外键,这里演示的是外键方式
表结构如下:
---------------------------
person表
personId //主键
personName //姓名
---------------------------
card表
cardId //主键
number //身份证号
personId //外键,关联person表
---------------------------
代码结构和使用的jar
Card.java(省略get set)
package com.orange.demo;/** * 身份证实体类 */public class Card {private Integer cardId;private String number;private Person person;}
Person.java(省略get set)
package com.orange.demo;/** * 人的实体类 */public class Person {private Integer personId;private String personName;private Card 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.orange.demo"><class name="Card" table="t_card"><id name="cardId" column="cardId"><generator class="native"></generator></id><property name="number" column="number" type="string"></property><many-to-one name="person" class = "com.orange.demo.Person" column="personId"></many-to-one></class></hibernate-mapping>
Person.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.orange.demo"><class name="Person" table="t_person"><id name="personId" column="personId"><generator class="native"></generator></id><property name="personName" column="personName" type="string"></property><!--property-ref 对方(身份证)外键(personId)对应的属性名(person) --><one-to-one name="card" class="com.orange.demo.Card" property-ref="person"></one-to-one></class></hibernate-mapping>
Test.java
package com.orange.demo;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.Transaction;import org.hibernate.cfg.Configuration;public class Test {private static SessionFactory sessionFactory = null;static{Configuration cfg = new Configuration();cfg.configure("hibernate.cfg.xml");//在src目录下sessionFactory = cfg.buildSessionFactory();}public static void main(String[] args) {try {save();//delete();} catch (Exception e) {e.printStackTrace();}}public static void save() throws Exception {Session session = sessionFactory.openSession();Transaction tx = session.beginTransaction();//保存人的信息Person person = new Person();person.setPersonName("大橙子");//保存身份证信息Card card = new Card();card.setNumber("88888");//设置关联关系person.setCard(card);card.setPerson(person);//保存到数据库session.save(person);session.save(card);tx.commit();session.close();}public static void delete() throws Exception{Session session = sessionFactory.openSession();Transaction tx = session.beginTransaction();//可以删除cardCard card = (Card) session.get(Card.class, new Integer(1));session.delete(card);//删除person报错,有外键约束不能删除//Person person = (Person) session.get(Person.class, new Integer(1));//session.delete(person);tx.commit();session.close();}}
hibernate.cfg.xml
<!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Configuration DTD 3.0//EN""http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"><hibernate-configuration><session-factory name="foo"><!-- 数据库方言 --> <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property><property name="connection.url">jdbc:mysql://localhost:3306/t1?characterEncoding=UTF-8</property><property name="connection.driver_class">com.mysql.jdbc.Driver</property><property name="connection.username">root</property><property name="hibernate.connection.password">123456</property><!-- 在控制台打印SQL,但不能打印建表语句 --><property name="hibernate.show_sql">true</property><!-- 打印SQL是否格式化 false:不格式化 --><property name="hibernate.format_sql">false</property><!--自动更新数据库结构 --><property name="hbm2ddl.auto">update</property><mapping resource="com/orange/demo/Card.hbm.xml"/><mapping resource="com/orange/demo/Person.hbm.xml"/></session-factory></hibernate-configuration>
0 0
- hibernate 一对一
- Hibernate 一对一
- hibernate 一对一
- hibernate一对一
- hibernate一对一
- Hibernate的一对一关系
- Hibernate 一对一例
- [原创]hibernate 一对一实践
- Hibernate 一对一例
- hibernate 一对一实践 - -
- hibernate一对一映射例子
- hibernate双向一对一
- hibernate一对一关联映射--
- Hibernate映射 一对一例
- Hibernate中的一对一关系
- hibernate一对一关联映射
- hibernate一对一实现
- hibernate 一对一实践
- 弹性域中数据查询
- 百度员工离职总结:如何做个好员工
- gedit配色
- 【LeetCode】Unique Binary Search Trees II
- 取订单头状态和行状态
- hibernate一对一
- Tomcat项目部署方式
- 更新字段值
- Struts2.0 Struts2.1 Struts1 spring-mvc3.2 核心类
- 如何使用 gnome-screenshot 截图命令
- 一些极度损害用户体验的流氓软件和硬件
- 下载的jar包导入工程中
- 设计模式三之装饰者模式
- 【LeetCode】Unique Binary Search Trees