2012年3月25日 hibernate

原创 2012年03月26日 00:03:05

基本hibernate所需的Jar包


hibernate-annotations所需的Jar包


在此基础上用log4j 显示日志所需的Jar包




hibernate.cfg.xml文件 最好不要用其它名字,不然要在configure()方法中加参数

        
        <!-- Enable Hibernate's automatic session context management -->
        <property name="current_session_context_class">thread</property>

        <!-- Disable the second-level cache  -->
        <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>

        <!-- Echo all executed SQL to stdout -->
        <property name="show_sql">true</property>
        <property name="format_sql">true</property>

        <!-- Drop and re-create the database schema on startup -->
        property name="hbm2ddl.auto">update</property>
        <mapping resource="com/wx/hibernate/Student.hbm.xml"/>
        <!-- 使用hibernate-annotations~~ 目前主要使用 -->
        <mapping class="com.wx.hibernate.Teacher"/>

domain model:TeacherPK.java|Teacher.java


//联合主键第一种 @Embeddable + @id 
//类要实现Serializable接口,重写equals和hashCode方法
//@Embeddable
public class TeacherPK implements java.io.Serializable{
	private int id;
	private String name;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	
	@Override
	public boolean equals(Object o) {
		if(o instanceof TeacherPK) {
			TeacherPK pk = (TeacherPK)o;
			if(this.id == pk.getId() && this.name.equals(pk.getName())) {
				return true;
			}
		}
		return false;
	}
	
	@Override
	public int hashCode() {
		return this.name.hashCode();
	}



//定义生成器的名字(下面id处指定这个生成器)
@Entity
@TableGenerator(
	    name="Teacher_GEN",
	    table="GENERATOR_TABLE",
	    pkColumnName = "pk_key",
	    valueColumnName = "pk_value",
	    pkColumnValue="Teacher",
	    allocationSize=1
	)
@SequenceGenerator(name="teacherSEQ", sequenceName="teacherSEQ_DB")
//@IdClass(TeacherPK.class)
//联合主键第三种 @IdClass + @id + @id 
public class Teacher {
	//private TeacherPK pk;
	private int id;
	private String name;
	private String title; 
	private String yourWifeName;
	private Date birthDate;
	private boolean good;
	private Gender gender;
	
	//枚举类型
	@Enumerated(EnumType.STRING)
	public Gender getGender() {
		return gender;
	}
	public void setGender(Gender gender) {
		this.gender = gender;
	}
	public boolean isGood() {
		return good;
	}
	public void setGood(boolean good) {
		this.good = good;
	}
	//透明
	@Transient
	public String getYourWifeName() {
		return yourWifeName;
	}
	public void setYourWifeName(String yourWifeName) {
		this.yourWifeName = yourWifeName;
	}

	//指定id生成策略  和 所用的生成器的名字(应该是不能和联合主键一起用,已测~)
	@Id
	@GeneratedValue(strategy=GenerationType.TABLE, generator="Teacher_GEN")
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	
	//@Id
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getTitle() {
		return title;
	}
	public void setTitle(String title) {
		this.title = title;
	}
	//时间精度
	@Temporal(TemporalType.TIME)
	public Date getBirthDate() {
		return birthDate;
	}
	public void setBirthDate(Date birthDate) {
		this.birthDate = birthDate;
	}
	
	/*@EmbeddedId
	 //联合主键第二种 直接@EmbeddedId (个人选这种)
	public TeacherPK getPk() {
		return pk;
	}
	public void setPk(TeacherPK pk) {
		this.pk = pk;
	}*/

JUnit测试类:(建议放在新建的Source Folder-test下)

private static SessionFactory sessionFactory;
	
	@BeforeClass
	public static void beforeClass() {
			sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();
	}
	@AfterClass
	public static void afterClass() {
		sessionFactory.close();
	}
		
	@Test
	public void testTeacherSave() {	
		Teacher t = new Teacher();
		//t.setId(1);
		t.setName("t1");
		t.setTitle("middle");
		t.setGender(Gender.FEMALE);
		t.setBirthDate(new Date());
		
		//getCurrentSession() 与 openSession() 
		//openSession每次new一个Session对象(新的hibernate不推荐使用)
		Session session = sessionFactory.getCurrentSession();
		session.beginTransaction();
		session.save(t);
		session.getTransaction().commit();
	}


猜叔叔的出生年月日 今年的植树节(2012年3月12日),小明和他的叔叔还有小伙伴们一起去植树。

package org.bluebridge.topics; /* * 猜叔叔的出生年月日 今年的植树节(2012年3月12日),小明和他的叔叔还有小伙伴们一起去植树。 休息的时候,小明的同学...
  • u013091087
  • u013091087
  • 2015年02月12日 15:59
  • 1033

2018年2月3日训练日记

要理解思想而不是代码!!! 昨天晚上的比赛。重新读了B题。然后发现当时读错题意了(1、乘积号看成和号2、输出n行,以为是一行)。今天读完了之后突然发现好水。立马敲了一遍kmp搞过了。注意的是每个...
  • LSD20164388
  • LSD20164388
  • 2018年02月03日 21:01
  • 113

2012年蓝桥杯 猜生日 【初赛试题】

猜生日     今年的植树节(2012年3月12日),小明和他的叔叔还有小伙伴们一起去植树。休息的时候,小明的同学问他叔叔多大年纪,他叔叔说:“我说个题目,看你们谁先猜出来!”     “把我出...
  • u010870518
  • u010870518
  • 2014年03月21日 19:51
  • 1459

每天一道笔试题-2012年3月12日

题目一: 分析下面程序是否有正确输出?有,输出什么;无,为什么? #include void print1() { printf("print_1\n"); goto LABEL2; ...
  • wwang196988
  • wwang196988
  • 2012年03月12日 11:14
  • 1003

BSOJ2926 RQNOJ595 tyvj 1342 -- 【模拟试题】教主泡嫦娥 随机化+DP

想要看随机化的可以看看我的这篇文章 BSOJ2926 RQNOJ595 tyvj 1342 -- 【模拟试题】教主泡嫦娥 Description 【问题背景】   2012年12月21日下午3点14分...
  • moep0
  • moep0
  • 2016年10月31日 15:36
  • 219

2018人工智能创新峰会3月28日无锡举办!

大会背景       人工智能近年来成为社会越来越关注的领域,人工智能是一个极具挑战性的研究领域,人们在这一领域进行了半个多世纪的理论探索和技术攻坚。近年来,该领域飞跃式的理论进展和应用普及...
  • becky90
  • becky90
  • 2018年01月26日 17:36
  • 34

2012年3月25日学习

一、设计模式     1,适配器模式:自己的理解就是:在编程的过程中,没有思考到特别的例子,所以需要对系统进行重构,但是不想改变系统程序的全部结构,就创建一个接口用目标的系统代码,(在计算机编程...
  • ljz2009y
  • ljz2009y
  • 2012年05月18日 13:38
  • 773

今天是2012年3月25日

昨晚12点睡觉,在床上睡不着,就去沙发睡 第一部 我带媳妇出国旅游,此部分占了很大行程,有点像《四月物语》,然后在国外快走的前一天,我们吵架了,第二天,找不到她人,我去问导游,人呢? 导...
  • xinxin1982
  • xinxin1982
  • 2012年03月25日 17:50
  • 143

2018.1.24日记

提起封装,大家并不陌生。前面我们学习方法时,就提起过,将具体功能封装到方法中,学习对象时,也提过将方法封装在类中,其实这些都是封装。 封装,它也是面向对象思想的特征之一。面向对象共有三个特征:封装,...
  • Dongser
  • Dongser
  • 2018年01月25日 17:31
  • 30

【动态规划】教主泡嫦娥

教主泡嫦娥 (p2.pas/cpp/in/out)   【问题背景】 2012年12月21日下午3点14分35秒,全世界各国的总统以及领导人都已经汇聚在中国的方舟上。 但也有很多百姓平民想搭...
  • wu_yihao
  • wu_yihao
  • 2012年10月14日 11:34
  • 524
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:2012年3月25日 hibernate
举报原因:
原因补充:

(最多只允许输入30个字)