初级,最笨重的方法:
中级:较为简化的连接方法:
高级:最简单的方法,使用接口封装: 辅助类:
定义接口规则:
接口实现,编写规则:
具体数据获取,访问数据库得到数据:
- 包 com.svse.dao;
- 进口 的java.util.ArrayList;
- 进口 的java.util.List;
- 导入 的org.hibernate.Session;
- 进口 的SessoinFactory;
- 导入 org.hibernate.Transaction;
- 导入 org.hibernate.cfg.Configuration;
- 导入 com.svse.entity.TDept;
- / /部门数据处理
- 公共 类 DeptDao_1 {
- / /全查询,
- 公共 列表的getAll(){
- 列表AR = 新的 ArrayList();
- / / 1,加载配置文件,连接数据库
- 配置配置 配置(元),配置();
- / / 2,得到数据映射的工具:SessionFactory的;
- SessionFactory中的SessionFactory = config.buildSessionFactory();
- / / 3,得到动作处理工具会议,执行相应的动作;
- 届会议sessionFactory.openSession();
- / / 4,使用会话工具执行动作;
- AR = session.createQuery(“FROM TDept” ),列表();
- / / 5,关闭工具
- session.close();
- 返回 AR;
- }
- / /查询一个
- 公共 TDept getOne(INT P_ID){
- DEPT TDept,= 新 TDept();
- 配置配置 配置(元),配置();
- SessionFactory中的SessionFactory = config.buildSessionFactory();
- 届会议sessionFactory.openSession();
- / /通过ID获取到一个对象; TDept.class使用到的Java的反射机制;
- 部中=(TDept)session.get(类 TDept. , 新的 整数(P_ID),的);
- session.close();
- 返回 部;
- }
- / ************************************************* ************************ /
- / **********
- *增,删,改
- *安全性;
- *
- *
- *
- *
- ************** /
- / /增加
- 公共的 无效 addDept(TDept部){
- 配置配置 配置(元),配置();
- SessionFactory中的SessionFactory = config.buildSessionFactory();
- 届会议sessionFactory.openSession();
- 交易CTX = session.beginTransaction();
- / /增加的session.save(部);
- 的session.save(部);
- ctx.commit();
- session.close();
- }
- / /修改
- 公共的 无效 更新(TDept部){
- 配置配置 配置(元),配置();
- SessionFactory中的SessionFactory = config.buildSessionFactory();
- 届会议sessionFactory.openSession();
- / /开启事务
- 交易CTX = session.beginTransaction();
- / /修改的update()方法
- session.update(部);
- / /提交事务
- ctx.commit();
- session.close();
- }
- / /删除
- 公共 无效 删除(部TDept){
- 配置配置 配置(元),配置();
- SessionFactory中的SessionFactory = config.buildSessionFactory();
- 届会议sessionFactory.openSession();
- / /开启事务以保证数据的安全性;
- 交易CTX = session.beginTransaction();
- / /动作:删除();操作
- 使用Session.delete(部);
- / /提交事务
- ctx.commit();
- session.close();
- }
- 公共 静态 无效的 主要(字串[] args){
- DeptDao_1 DAO = 新 DeptDao_1();
- System.out.println(dao.getAll()的大小());
- }
- }
中级:较为简化的连接方法:
- 包 com.svse.dao;
- 进口 的java.util.ArrayList;
- 进口 的java.util.List;
- 导入 的org.hibernate.Session;
- 进口 的SessoinFactory;
- 导入 org.hibernate.Transaction;
- 导入 org.hibernate.cfg.Configuration;
- 导入 com.svse.entity.TUser;
- / /使用封装类简化代码进行操作
- 公共 类 UserDao1 {
- / /定义基本属性字段
- 私人 静态 配置配置= NULL ;
- 私人 静态的 SessionFactory的SessionFactory = 空;
- 私人 静态 届会议= NULL ;
- 私人 静态 交易CTX = NULL ;
- / /该内部类的特点:UserDao1这个实例化一次的时候自动的调用一次;
- 静态{
- 尝试{
- 配置 新的 配置()配置();
- SessionFactory的config.buildSessionFactory();
- 会话= sessionFactory.openSession();
- } 赶上(例外){
- ex.printStackTrace();
- }
- }
- / /增加
- 公共的 无效 ADDUSER(为TUser用户){
- CTX = session.beginTransaction();
- 的session.save(用户);
- ctx.commit();
- session.close();
- }
- / /修改
- 公共 无效 UpdateUser两个(为TUser用户){
- CTX = session.beginTransaction();
- session.update(用户);
- ctx.commit();
- session.close();
- }
- / /删除
- 公共 无效 deluser命令(为TUser用户){
- CTX = session.beginTransaction();
- 使用Session.delete(用户);
- ctx.commit();
- session.close();
- }
- / /全查询
- 公共 列表的getAll(){
- 列表AR = 新的 ArrayList();
- AR = session.createQuery(“FROM的TUser” )。列表();
- session.close();
- 返回 AR;
- }
- / /查询一个
- 公众 为TUser getOne(INT U_ID){
- 为TUser用户= 新 的TUser();
- 用户=(为TUser)session.get(TUser. 类新的 整数(U_ID));
- session.close();
- 返回 用户;
- }
- }
高级:最简单的方法,使用接口封装: 辅助类:
- 包 com.svse.util;
- 进口 org.hibernate.HibernateException;
- 导入 的org.hibernate.Session;
- 导入 org.hibernate.cfg.Configuration;
- / **
- *配置和Hibernate会话,提供了访问,绑在
- *当前线程的执行。如下主题本地会话
- *图案,见{@链接http://hibernate.org/42.html}。
- * /
- 公共 类 HibernateSessionFactory {
- 私人 静态的 字符串CONFIG_FILE_LOCATION = “/ hibernate.cfg.xml的” ;
- 私人 静态 最终 ThreadLocal的<Session> ThreadLocal的 新 ThreadLocal的<Session>的();
- 私人 静态 配置配置 新 配置();
- 私人 静态的 的SessoinFactory SessionFactory;
- 私人 静态 字符串CONFIGFILE = CONFIG_FILE_LOCATION;
- 静态 {
- 尝试 {
- configuration.configure(CONFIGFILE);
- SessionFactory的configuration.buildSessionFactory();
- } 赶上 (例外五){
- System.err的
- 调用println( “ 创建SessionFactory的%%%%%%%%错误” );
- e.printStackTrace();
- }
- }
- 私人 HibernateSessionFactory(){
- }
- / **
- *返回的ThreadLocal Session实例。懒初始化
- *在<code>的SessionFactory </代码,如果需要的话。
- *
- * @返回会议
- * @抛出HibernateException
- * /
- 公共 静态 会话getSession() 抛出 HibernateException的{
- Session会话(会话)threadLocal.get();
- (会话== NULL | |!session.isOpen()){
- (SessionFactory的== NULL ){
- rebuildSessionFactory();
- }
- 会话=(SessionFactory的!= 空)?(sessionFactory.openSession)
- : 空;
- threadLocal.set(会话);
- }
- 返回 会话;
- }
- / **
- *重建hibernate会话工厂
- *
- * /
- 公共 静态的 无效 rebuildSessionFactory(){
- 尝试 {
- configuration.configure(CONFIGFILE);
- SessionFactory的configuration.buildSessionFactory();
- } 赶上 (例外五){
- System.err的
- 调用println( “ 创建SessionFactory的%%%%%%%%错误” );
- e.printStackTrace();
- }
- }
- / **
- *关闭单个的Hibernate会话实例。
- *
- * @抛出HibernateException
- * /
- 公共 静态 无效 关闭会话() 抛出 HibernateException的{
- Session会话(会话)threadLocal.get();
- threadLocal.set(空);
- (会话!= 0 ){
- session.close();
- }
- }
- / **
- *返回会话工厂
- *
- * /
- 公共 静态 的SessoinFactory的的getSessionFactory(){
- 返回 SessionFactory的;
- }
- / **
- *返回会话工厂
- *
- *会话工厂将在未来的呼叫rebuilded
- * /
- 公共 静态 无效 setConfigFile(字符串CONFIGFILE){
- HibernateSessionFactory.configFile = CONFIGFILE;
- SessionFactory的= NULL ;
- }
- / **
- *返回hibernate配置
- *
- * /
- 公共 静态的 配置getConfiguration(){
- 返回 配置;
- }
- }
定义接口规则:
- 包 com.svse.util;
- 导入 的org.hibernate.Session;
- / /结果定义规则
- 公共 接口 IHibernateSessionFactorySupport {
- / /得到会话
- 公共 会话getSession();
- / /开启事务
- 公共 无效 调用BeginTransaction();
- / /提交事务
- 公共的 无效 commitTransaction();
- / /关闭所有
- 公共的 无效 closeAll();
- }
接口实现,编写规则:
- 包 com.svse.util;
- 导入 的org.hibernate.Session;
- 导入 org.hibernate.Transaction;
- 公共 类实现
- IHibernateSessionFactorySupport {
- / /定义事务的对象:
- 私人 交易CTX = 空;
- / /开启事务
- 公共 无效 调用BeginTransaction(){
- CTX = getSession()调用BeginTransaction();
- }
- / /提交事务
- 公共的 无效 commitTransaction(){
- 尝试{
- ctx.commit();
- } 赶上(例外){
- ex.printStackTrace();
- / /事务回滚
- 如果(ctx! = 空){
- ctx.rollback();
- }
- } 最后{
- HibernateSessionFactory.closeSession();
- }
- }
- / /关闭所有调用自动生类中定义方法
- 公共的 无效 closeAll(){
- HibernateSessionFactory.closeSession();
- }
- / /得到会话
- 公共 会话getSession(){
- / /返回一个会话的对象
- 返回 HibernateSessionFactory.getSession的();
- }
- }
具体数据获取,访问数据库得到数据:
- 包 com.svse.dao;
- 进口 的java.util.List;
- 导入 com.svse.entity.TUser;
- 导入 com.svse.util.HibernateSessionFactorySupportImpl;
- 公共 类扩展 HibernateSessionFactorySupportImpl的{
- / /增加 - 涉及到数据的变化,需要使用事务
- 公共的 无效 ADDUSER(为TUser用户){
- / /第一步:开启事务
- 调用BeginTransaction();
- / /第二步:执行动作
- getSession()。保存(用户);
- / /第三步:提交事务,并关闭相关的工具
- commitTransaction();
- }
- / /修改
- 公共 无效 UpdateUser两个(为TUser用户){
- / /第一步:涉及到数据的安全性,先开启事务;
- 调用BeginTransaction();
- / /第二步:获得会话对象并执行修改的动作;
- getSession()更新(用户);
- / /第三步:提交事务,并关闭相关的工具;
- commitTransaction();
- }
- / /删除
- 公共 无效 deluser命令(INT U_ID){
- / / 1,开启事务
- 调用BeginTransaction();
- / / 2,执行动作
- getSession()。删除(getOne(U_ID));
- / / 3,提交事务并关闭相关的工具
- commitTransaction();
- }
- / /查询一个
- 公众 为TUser getOne(INT U_ID){
- / /第一步:获取会话对象执行动作,得到集合对象获取数据;
- 为TUser用户=(为TUser) getSession()。(TUser. 类新的 整数(U_ID));
- / /第二步:关闭会话工具;
- closeAll();
- 返回 用户;
- }
- / /全查询
- 公共 列表的getAll(){
- 列表AR = getSession()。createQuery( “ 为TUser” )名单();
- closeAll();
- 返回 AR;
- }
- 公共 静态 无效的 主要(字串[] args){
- UserDao2 DAO =: 新 UserDao2();
- 为TUser用户= 新 的TUser();
- user.setUId(1 );
- user.setUName( “ 小红AA” );
- user.setUPwd(“123” );
- dao.updateUser(用户);
- }
- }