Hibernate 1、Hello Hibernate
所使用到的jar 包:
1、创建实体类
public class User {
	private Integer id;
	private String name;
	private String address;
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getAddress() {
		return address;
	}
	public void setAddress(String address) {
		this.address = address;
	}
}
2、配置映射文件
<hibernate-mapping>
<class name="cn.model.User" table="USER" lazy="true">
<id name="id" column="ID">
<generator class="native"></generator>
</id>
<property name="name" column="NAME" type="java.lang.String" />
<property name="address" column="ADDRESS" type="java.lang.String" />
</class>
</hibernate-mapping>
3、配置hiberante.cfg.xml;hibernate.properties 详细 http://blog.csdn.net/oxiaoxio/article/details/49304591
<hibernate-configuration>
<session-factory name="sessionFactory">
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/spring?useUnicode=true&characterEncoding=UTF-8</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password"></property>
<property name="hibernate.show_sql">true</property>
<property name="hibernate.format_sql">true</property>
<property name="hibernate.hbm2ddl.auto">update</property> <mapping resource="cn/hbm/User.hbm.xml"/>
</session-factory>
</hibernate-configuration>
4、测试用例:
public class Conn {
	public void addUser(){
		Configuration cfg=new Configuration();
		cfg.configure();
		ServiceRegistry sr=new ServiceRegistryBuilder().applySettings(cfg.getProperties()).buildServiceRegistry();
		SessionFactory sf=cfg.buildSessionFactory(sr);
		Session s=sf.openSession();
		Transaction trans=s.beginTransaction();
		User user=new User();
		user.setName("汤姆");
		user.setAddress("北海");
		s.save(user);
		trans.commit();
		s.close();
	}
}
代码优化:
新建一个类名字是HibernateSessionFactory:
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder; public class HibernateSessionFactory {
private static final ThreadLocal<Session> threadLocal = new ThreadLocal<Session>();
private static org.hibernate.SessionFactory sessionFactory;
private static Configuration configuration = new Configuration();
private static ServiceRegistry serviceRegistry; static {
try {
configuration.configure();
serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry();
sessionFactory = configuration.buildSessionFactory(serviceRegistry);
} catch (Exception e) {
System.err.println("%%%% Error Creating SessionFactory %%%%");
e.printStackTrace();
}
}
private HibernateSessionFactory() {
} public static Session getSession() throws HibernateException {
Session session = (Session) threadLocal.get(); if (session == null || !session.isOpen()) {
if (sessionFactory == null) {
rebuildSessionFactory();
}
session = (sessionFactory != null) ? sessionFactory.openSession()
: null;
threadLocal.set(session);
} return session;
} public static void rebuildSessionFactory() {
try {
configuration.configure();
serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry();
sessionFactory = configuration.buildSessionFactory(serviceRegistry);
} catch (Exception e) {
System.err.println("%%%% Error Creating SessionFactory %%%%");
e.printStackTrace();
}
} public static void closeSession() throws HibernateException {
Session session = (Session) threadLocal.get();
threadLocal.set(null); if (session != null) {
session.close();
}
} public static org.hibernate.SessionFactory getSessionFactory() {
return sessionFactory;
} public static Configuration getConfiguration() {
return configuration;
} }
优化过以后代码:
public void addUser(){
		Session s=HibernateSessionFactory.getSession();
		Transaction trans=s.beginTransaction();
		User user=new User();
		user.setName("汤姆11");
		user.setAddress("北海");
		s.save(user);
		trans.commit();
		s.close();
	}												
											Hibernate 1、Hello Hibernate的更多相关文章
- Hibernate(八)__级联操作、struts+hibernate+接口编程架构
		
级联操作 所谓级联操作就是说,当你进行主对象某个操作时,从对象hibernate自动完成相应操作. 比如: Department <---->Student 对象关系,我希望当我删除一个d ...
 - hibernate......1、2级缓存
		
1.什么是缓存? 缓存是介于物理数据源与应用程序之间,是对数据库中的数据复制一份临时放在内存中的容器,其作用是为了减少应用程序对物理数据源访问的次数,从而提高了应用程序的运行性能.Hibernate在 ...
 - JavaPersistenceWithHibernate第二版笔记-第五章-Mapping value types-007UserTypes的用法(@org.hibernate.annotations.Type、@org.hibernate.annotations.TypeDefs、CompositeUserType、DynamicParameterizedType、、、)
		
一.结构 二.Hibernate支持的UserTypes接口  UserType —You can transform values by interacting with the plain JD ...
 - JavaPersistenceWithHibernate第二版笔记-第五章-Mapping value types-005控制类型映射(Nationalized、@LOB、@org.hibernate.annotations.Type)
		
一.简介 1. 2. 3. 4. to override this default mapping. The JPA specification has a convenient shortcut a ...
 - SPRING IN ACTION 第4版笔记-第十一章Persisting data with object-relational mapping-001-使用Hibernate(@Inject、@EnableTransactionManagement、@Repository、PersistenceExceptionTranslationPostProcessor)
		
一.结构 二.Repository层 1. package spittr.db; import java.util.List; import spittr.domain.Spitter; /** * ...
 - hibernate 查询、二级缓存、连接池
		
hibernate 查询.二级缓存.连接池 查询: 1) 主键查询 Dept dept = (Dept) session.get(Dept.class, 12); Dept dept = (Dep ...
 - Hibernate缓存、组件、继承映射
		
Hibernate缓存.组件.继承映射 三种状态: 临时状态:不受session管理,没有提交到数据库:没有执行sql之前,new对象的时候: 持久化状态:受session管理,提交到数据库:正在执行 ...
 - Hibernate查询、连接池、二级缓存
		
Hibernate第三天: 1. 对象状态 2. session缓存 3. lazy懒加载 4. 映射 一对一对映射 组件/继承映射 目标: 一.hibernate查询 二.hibernate对连接池 ...
 - 说说自己对hibernate一级、二级、查询、缓存的理解。
		
说说自己对hibernate一级.二级.查询.缓存的理解. 2016-03-14 21:36 421人阅读 评论(0) 收藏 举报 分类: web开发(19) 版权声明:本文为博主原创文章,未经博 ...
 
随机推荐
- POJ 1562 Oil Deposits (并查集 OR DFS求联通块)
			
Oil Deposits Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 14628 Accepted: 7972 Des ...
 - leetcode 326. Power of Three(不用循环或递归)
			
leetcode 326. Power of Three(不用循环或递归) Given an integer, write a function to determine if it is a pow ...
 - 在SQL Server中如何快速查找DBCC命令和语法?
			
DBCC命令非常好用,但是命令很多语法就很多,如何快速记忆呢?是否都要背下来.其实不用,只要能知道每个命令的作用并且记住DBCC HELP命令就可以了. --查找所有的DBCC命令 DBCC HEL ...
 - c#中(int)、int.Parse()、int.TryParse、Convert.ToInt32的区别
			
本文来自:http://blog.csdn.net/tangjunping/article/details/5443337 以前经常为这几种数据类型转换方式而迷茫,这次为了彻底搞清它们之间的区别和优缺 ...
 - shu_1186 字符排列问题
			
cid=1079&pid=23">http://202.121.199.212/JudgeOnline/problem.php?cid=1079&pid=23 分析: ...
 - Windows 应用程序结构
			
Windows 应用程序结构
 - RDLC报表系列(六) 多图表-折线图和柱状图
			
美好的一天开始了,这篇是RDLC系列的最后一篇文章,我的小项目也已经release,正在测试中. 1.新建demo3.aspx和demo3.rdlc文件 2.往rdlc文件中拖一个图标控件,在弹出的窗 ...
 - MRP工作台任务下达之x组织屏蔽全部发放功能
			
应用 Oracle Manufacturing Planning 层 Level Function 函数名 Funcgtion Name MRPFPPWB-390 表单名 Form Name MR ...
 - css画图形
			
博客: 史上最强大的40多个纯cs图形 问题:看了上面的博客思考简单的三角行是怎么形成的? #triangle-up { width: 0; height: 0; border-left: 50px ...
 - 文件搜索查找功能VC++
			
1.搜索指定文件夹下的文件名和路径 #undef UNICODE #include <iostream> #include <string> #include <vect ...