文档章节

hibernate一对一关系(primary)

黄柳淞
 黄柳淞
发布于 2016/12/02 17:07
字数 583
阅读 12
收藏 0

1.部门配置

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
<hibernate-mapping>
	<class name="com.huangliusong.one2one.primary.Department" table="departments">
		<id name="d_id" type="java.lang.Integer">
			<column name="d_id"></column>
			<generator class="foreign">
				<!-- 指定使用哪个主键生成主键 -->
				<param name="property">mgr</param>
			</generator>
		</id>
		<property name="d_name" type="java.lang.String">
			<column name="d_name"></column>
		</property>
		
		<one-to-one name="mgr" class="com.huangliusong.one2one.primary.Maneger" constrained="true"></one-to-one>
	</class>
</hibernate-mapping>

 

 

2.经理配置

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
<hibernate-mapping>
	<class name="com.huangliusong.one2one.primary.Maneger" table="manegers">
		<id name="m_id" type="java.lang.Integer">
			<column name="m_id" ></column>
			<generator class="native"></generator>
		</id>
		<property name="m_name" type="java.lang.String">
			<column name="m_name"></column>
		</property>
		<!-- 	映射1对1的关联关系 在对应的数据表中已经有外键了 当前持久化使用one2one进行映射 -->
		<one-to-one name="department" 
		class="com.huangliusong.one2one.primary.Department" >
			
		</one-to-one>
	</class>
</hibernate-mapping>

3.cfg.xml

<?xml version='1.0' encoding='UTF-8'?>
<!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>
		<property name="connection.username">root</property>
		<property name="connection.password">linuxG</property>
		<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
		<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
		<property name="connection.url">jdbc:mysql://localhost:3306/hls</property>
		<property name="show_sql">true</property>
		<property name="format_sql">true</property><!-- 格式化sql数据库 -->
		<property name="hbm2ddl.auto">update</property>
		<!-- 配置C3P0数据源  -->
		<property name="hibernate.c3p0.max_size">10</property>
		<property name="hibernate.c3p0.min_size">5</property>
		<property name="c3p0.acquire_increment">2</property>
		
		<property name="c3p0.idle_test_period">2000</property>
		<property name="c3p0.timeout">2000</property>
		
		<property name="c3p0.max_statements">10</property>
		
		<!-- 设定jdbc 的statement读取数据的时候每次从数据库中取出记录的条数 -->
		<property name="hibernate.jdbc.fetch_size">100</property>
		
		<!-- 设定数据库进行批量删除的时候 批量更新 的时候 批次的大小 -->
		<property name="hibernate.jdbc.batch_size">30</property>
		<!-- 删除对象后将OID置为空 -->
		<property name="use_identifier_rollback">true</property>
		
	<mapping resource="com/huangliusong/one2one/primary/Maneger.hbm.xml"/>
	<mapping resource="com/huangliusong/one2one/primary/Department.hbm.xml"/>
    </session-factory>
	
</hibernate-configuration>

4.测试

package com.huangliusng.test;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import com.huangliusong.one2one.primary.Department;
import com.huangliusong.one2one.primary.Maneger;
import com.mchange.v1.cachedstore.CachedStore.Manager;
import com.sun.mail.handlers.message_rfc822;

public class TestHibernate5 {
	private static SessionFactory sessionFactory;
	private static Session session;
	private static Transaction transaction;

	@Before
	public void init() {
		// 1.创建配置对象
		Configuration config = new Configuration().configure();
		// 2.服务注册对象
		ServiceRegistry serviceRegistry = new ServiceRegistryBuilder()
				.applySettings(config.getProperties()).buildServiceRegistry();
		// 3.创建会话工厂
		sessionFactory = config.buildSessionFactory(serviceRegistry);
		// 4.创建会话
		session = sessionFactory.openSession();
		// 5.打开会话
		transaction = session.beginTransaction();
	}

	@After
	public void destory() {
		transaction.commit();
		session.close();
		sessionFactory.close();
	}

	@Test
	public void OneToOne() {
		Department department=new Department();
		department.setD_name("技术部B22");
		Maneger maneger=new Maneger();
		maneger.setM_name("技术部经理B22");
		
		department.setMgr(maneger);
		maneger.setDepartment(department);
		
		session.save(department);
		session.save(maneger);
	}
	@Test 
	public void testGet(){
		//默认对关联属性使用懒加载
		/*Maneger maneger=(Maneger)session.get(Maneger.class, 1);
		System.out.println(maneger.getM_id());
		System.out.println(maneger.getDepartment().getD_name());*/
		
		/*System.out.println("==========");
		Department department=(Department)session.get(Department.class, 1);
		System.out.println(department.getMgr().getM_name());*/
		
	}

}

 

© 著作权归作者所有

黄柳淞
粉丝 2
博文 108
码字总数 54251
作品 0
南宁
程序员
私信 提问
hibernate学习和各种关系总结

原文地址 http://yifanxiang.blog.163.com/blog/static/5000083420105270522523/ hibernate学习和各种关系总结。 @Entity 定一个类向表的映射关系 @Id 定义此属性为主键 @GeneratedValue 属性...

晓亮
2011/06/10
0
0
Hibernate性能优化3( 转)

作者:Robbin Fan 一。 inverse = ? inverse=false(default) 用于单向one-to-many关联 parent.getChildren().add(child) // insert child parent.getChildren().delete(child) // delete chi......

九爷
2011/05/14
0
0
Hibernate映射——一对一双向关联映射(六)

我们介绍了一对一的单向关联映射,单向是指只能从人(Person)这端加载身份证端(IdCard),但是反过来,不能从身份证端加载人得信息。如图所示: 关键原因在于对象模型具有方向性: 单向:一...

architect刘源源
2018/01/11
3
0
Hibernate之关联关系映射(一对一主键映射和一对一外键映射)

1:Hibernate的关联关系映射的一对一外键映射:   1.1:第一首先引包,省略   1.2:第二创建实体类:     这里使用用户信息和身份证信息的关系,用户的主键编号既可以做身份证信息的...

别叫小伙
2017/03/22
0
0
Hibernate映射——一对一单向关联映射(五)

映射原理 两个实体对象之间是一对一的关联映射,即一个对象只能与另外唯一的一个对象相对应。例如:一个人(Person)只有一张身份证(IdCard)。我们看一下这个例子的对象模型,如下图所示: 对象...

architect刘源源
2018/01/11
2
0

没有更多内容

加载失败,请刷新页面

加载更多

jenkins定时构建时间设置

举几个例子: 每隔5分钟构建一次 H/5 * * * * 每两小时构建一次 H H/2 * * * 每天中午12点定时构建一次 H 12 * * * 每天下午18点定时构建一次 H 18 * * * 在每个小时的前半个小时内的每10分钟...

shzwork
3分钟前
0
0
Myeclipse 问题记录

1. 创建maven聚合(pom) 工程 ,子项目会带上 maven app这些文字,删掉后会导致工程文件在working set里消失,解决办法:右键子项目 import as project 解决问题。...

无敌小学僧
30分钟前
0
0
《Chez Scheme初探》定义变量、递归、测试性能、并列代码编写

普通fib函数 (define (fact n) (if (= n 1) 1 (* n (fact (- n 1)) ) )) 尾递归fib函数 (define (fact-tail n) (fact-rec n n))(defi......

flash胜龙
30分钟前
0
0
任正非对华为热点问题的回应亮了,终于知道华为为什么能扛过这一次的冲击!

任正非对华为热点问题的回应亮了,终于知道华为为什么能扛过这一次的冲击! 如果你是华为的老板,看到一条传遍网络的“美国封锁华为”、“华为禁令”的消息,你会怎么办? 昨天上午,华为创始...

forespider
56分钟前
2
0
Java HTTP 组件库选型看这篇就够了

最近项目需要使用 Java 重度调用 HTTP API 接口,于是想着封装一个团队公用的 HTTP client lib. 这个库需要支持以下特性: 连接池管理,包括连接创建和超时、空闲连接数控制、每个 host 的连...

Java面经
56分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部