package com;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.junit.After;
import org.junit.Before;
import org.junit.Test; import com.entity.Food;
import com.entity.Husband;
import com.entity.User;
import com.entity.Wife;
import com.entity.student.Classes;
import com.entity.student.Teacher; public class Test1 {
private Session s;
private Transaction tran;
@Before
public void before(){
s=HibernateUtils.getSession();
tran=s.beginTransaction();
} public void test(){ User user=(User)s.get(User.class,7);
//持久太
//user.setUsername("xixixi");
//修改后不用save直接提交也可保存
tran.commit();
s.clear();//使对象与session没有关系 , 脱离持久太 //把游离态的user变成持久态
tran=s.beginTransaction();
s.update(user);
user.setPassword("789");
tran.commit(); //将对象变成顺时太
tran=s.beginTransaction();
s.delete(user);
tran.commit();
} public void one2one(){
Husband h=new Husband();
Wife w=new Wife();
//创建两个瞬时对象
h.setName("xiaoming");
w.setName("baby");
w.setHusband(h);
s.save(w);
s.save(h); }
@Test
public void one2oneQuery(){
Husband h=(Husband)s.get(Husband.class, 2);
System.out.println(h.getName()+"-------------"+h.getWife().getName());
} @After
public void after(){
tran.commit();
HibernateUtils.closeSession(s);
}

hibernate.cfg.xml

package com.entity;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.MappedSuperclass;
@MappedSuperclass
public class BaseEntity {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Integer id; public Integer getId() {
return id;
} public void setId(Integer id) {
this.id = id;
} }

BaseEntity.java

package com;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration; public class HibernateUtils {
private static SessionFactory sf;
static{
Configuration cfg=new Configuration().configure();
//在根目录src下括号内路径可以省略
//Configuration cfg=new Configuration().configure("/hibernate.cfg.xml");
//读取配置文件
sf=cfg.buildSessionFactory();
}
//构造会话工厂 public static Session getSession(){
return sf.openSession();
}
//得到会话 public static void closeSession(Session session){
if(session!=null){
session.close();
}
}
//关闭会话 }

hibernateutils.java

用来读取配置文件,生成会话

hibernate 配置文件 和一个 id生成类BaseEntity.java 和一个hibernate工具类 HibernatUtils.java的更多相关文章

  1. Rhino+envjs-1.2.js 在java运行网站js 工具类

    java爬虫遇到个页面加密的东西,找了些资料学习学习 做了个java运行js的工具类,希望对大家有用,其中用到client(获取js)可以自行换成自己的client.主要是用了 Rhino就是Java ...

  2. Java 后台验证的工具类

    Java 后台验证的工具类 public class ValidationUtil {         //手机号     public static String mobile = "^( ...

  3. Java日期时间实用工具类

    Java日期时间实用工具类 1.Date (java.util.Date)    Date();        以当前时间构造一个Date对象    Date(long);        构造函数   ...

  4. Java并发多线程 - 并发工具类JUC

    安全共享对象策略 1.线程限制 : 一个被线程限制的对象,由线程独占,并且只能被占有它的线程修改 2.共享只读 : 一个共享只读的对象,在没有额外同步的情况下,可以被多个线程并发访问, 但是任何线程都 ...

  5. Redis 工具类 java 实现的redis 工具类

    最近了解了一下非关系型数据库 redis 会使用简单的命令 在自己本地电脑 使用时必须先启动服务器端 在启动客户端 redis 简介 Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内 ...

  6. 最全的Java操作Redis的工具类,使用StringRedisTemplate实现,封装了对Redis五种基本类型的各种操作!

    转载自:https://github.com/whvcse/RedisUtil 代码 ProtoStuffSerializerUtil.java import java.io.ByteArrayInp ...

  7. Java线程的并发工具类

    Java线程的并发工具类. 一.fork/join 1. Fork-Join原理 在必要的情况下,将一个大任务,拆分(fork)成若干个小任务,然后再将一个个小任务的结果进行汇总(join). 适用场 ...

  8. java中常用的工具类(一)

    我们java程序员在开发项目的是常常会用到一些工具类.今天我汇总了一下java中常用的工具方法.大家可以在项目中使用.可以收藏!加入IT江湖官方群:383126909 我们一起成长 一.String工 ...

  9. Java学习-041-颜色工具类(RGB,HEX)

    在日常的网页开发中,经常需要进行颜色数值获取.转换,例如获取红色,获取蓝色,获取绿色,RGB转十六进制颜色,十六进制颜色转RGB等,因而在学习过程中,写了一个小工具类,仅供各位小主参考! 多不闲言,直 ...

  10. java 二进制数字符串转换工具类

    java 二进制数字符串转换工具类 将二进制转换成八进制 将二进制转换成十进制 将二进制转换成十六进制 将十进制转换成二进制 package com.iteye.injavawetrust.ad; i ...

随机推荐

  1. 根据选择项过滤GridView

    前台代码: <div> <asp:CheckBoxList ID="CheckBoxList1" runat="server" AutoPos ...

  2. 两种MD5最后的值不一样,因为两种做法不一样

    //MD5加密 private static string Md5Hash(string input)         {             MD5CryptoServiceProvider m ...

  3. git配合tortoiseGit的基础使用

    转载自:http://www.cnblogs.com/ssor/archive/2012/02/04/2337823.html 一定要自己写出来才能牢记,所以我来写一下 git确实比svn好用的多了, ...

  4. 让正则表达式变简单(PythonVerbalExpressions)

    一.安装pip install VerbalExpressions二.导入from verbalexpressions import VerEx三.示例 使用案例一: 测试URL是否有效 from v ...

  5. c++设计模式总结 好久没写博客了 实在是忙

    具体代码就不贴出来了   通俗易懂的理解方式      原创 c++设计模式: 简单工厂模式 工厂模式有一种非常形象的描述,建立对象的类就如一个工厂,而需要被建立的对象就是一个个产品:在工厂中加工产品 ...

  6. python测试框架--nose

      最近再浏览Python自动化测试框架,之前接触过unittest,看了篇文章,发现nose貌似更牛逼一些,于是安装试了试,分享一下心得.     nose 项目是于 2005 年发布的,也就是 p ...

  7. iOS中的图像处理(二)——卷积运算

    关于图像处理中的卷积运算,这里有两份简明扼要的介绍:文一,文二. 其中,可能的一种卷积运算代码如下: - (UIImage*)applyConvolution:(NSArray*)kernel { C ...

  8. MySQL 讨厌哪种类型的查询

    ㈠ 任何查询都讨厌             只要是查询.MySQL都讨厌.执行查询最快的方式就是不去执行        缓存为王.比如Redis或者memcache               ㈡ 查 ...

  9. 驱动: oops

    linux驱动调试--段错误之oops信息分析 http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=29401328&id= ...

  10. [Swust OJ 217]--Factor(数论,类素数表)

    题目链接:http://acm.swust.edu.cn/problem/0217/ Time limit(ms): 2000 Memory limit(kb): 65535    Descripti ...