Hibernate环境配置与实战Demo
来源:互联网 发布:手机java游戏 网站 编辑:程序博客网 时间:2024/06/14 00:01
一、新建java项目,检查项目的编码,加入JDK1.7以上
二、引入jar包
2.1 引入required文件下面的所有jar包
* antlr-2.7.7.jar 实现hql到sql的转换 * dom4j-1.6.1.jar xml解析 * geronimo-jta_1.1_spec-1.1.1.jar Geronimo是一个项目(整合优秀的组件和设计理念) * hibernate-commons-annotations-5.0.1.Final.jar 注解 * hibernate-core-5.0.11.Final.jar 核心包 * hibernate-jpa-2.1-api-1.0.0.Final.jar hibenate对JPA的支持 * jandex-2.0.0.Final.jar 用来索引annotation * javassist-3.18.1-GA.jar 字节码操作 * jboss-logging-3.3.0.Final.jar 使用一个注解处理器来实现你的带注释的接口类
2.2 引入jpa文件夹下面的jar包
* hibernate-entitymanager-5.0.11.Final.jar hibernate对jpa的实现
2.3 引入jpa-metamodel-generator文件夹下面的jar包
* hibernate-jpamodelgen-5.0.11.Final.jar 关于模型自动生成的jar包
2.4 引入option/c3p0连接池的jar包
* c3p0-0.9.2.1.jar * mchange-commons-java-0.2.3.4.jar c3p0新版本的辅助包 * hibernate-c3p0-5.0.11.Final.jar
2.5 引入option/ecache下面的slf4j-api.jar
SLF4J ,simple logging facade for java 简单的日志门面 它不是具体的日志解决方案,它只是提供了统一的记录日志的接口 ,其他组件就按照其提供的接口实现即可 * slf4j-api.jar * slf4j-log4j.jar * log4j.jar
2.6 引入junit /mysql/oracle
* junit-4.11.jar
* hamcrest-core-1.3.jar
* mysql-connector-java-5.0.8-bin.jar
* ojdbc14.jar
三、数据库建立表(create table t_student(st_id int,st_name varchar(20), st_age int);)
定义一个对象(对应于数据库表的持久化对象)entity
四、hibernate的配置文件(hibernate.cfg.xml)
* 引用约束 核心包org.hibernate.hibenate-configuration-3.0.dtd * 数据库连接 project\etc\hibernate.properties * 数据源配置 c3po * 方言配置 * 上下文配置
<?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> <!-- 连接数据库四要素 数据库驱动 url username password --> <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> <property name="hibernate.connection.url">jdbc:mysql://127.0.0.1:3306/test</property> <property name="hibernate.connection.username">root</property> <property name="hibernate.connection.password">123456</property> <!--用c3p0的数据源连接方式 --> <property name="hibernate.connection.provider_class">org.hibernate.c3p0.internal.C3P0ConnectionProvider</property> <!--数据库方言 --> <property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property> <!--session上下文 --> <property name="hibernate.current_session_context_class">thread</property> <!--打印sql --> <property name="hibernate.show_sql">true</property> <!--打印的sql格式化 --> <property name="hibernate.format_sql">true</property> <!--加入映射文件路径 --> <mapping resource="com/xxx/hibernatestudy/sysmanage/entity/student.hbm.xml" /> </session-factory></hibernate-configuration>
五、数据库表与持久化对象的映射关系配置文件(xxx.hbm.xml)
* 引入约束 * 持久化对象和数据库表的对应关系 * 讲映射文件引入到主配置文件hibernate.cfg.xml中
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"><hibernate-mapping> <class name = "com.xxx.hibernatestudy.sysmanage.entity.Student" table = "T_STUDENT"> <id name = "stId" column = "ST_ID"> <generator class="native"></generator> </id> <property name="stName" column = "ST_NAME"></property> <property name="stAge" column = "ST_AGE"></property> </class></hibernate-mapping>
六、编写测试代码
package com.xxx.hibernatestudy.sysmanage.test;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.cfg.Configuration;import org.junit.Test;import com.xxx.hibernatestudy.sysmanage.entity.Student;public class HibernateDemoTest { private Session getSession() { //1:读取hibenrate.cfg.xml配置文件 Configuration configer = new Configuration().configure(); //Configuration configer = new Configuration().configure("xxx.cfg.xml"); //2:创建sessionFactory SessionFactory sessionFactory= configer.buildSessionFactory(); //3:获取session Session session = sessionFactory.getCurrentSession(); return session; } @Test public void testAdd(){ Session session = getSession(); try{ //4:开启事务 session.beginTransaction(); //session.getTransaction().begin(); //5:增删改查操作 Student student = new Student(); student.setStName("keshao");student.setStAge(18); session.save(student); //6:事务提交 session.getTransaction().commit(); }catch(Exception e){ e.printStackTrace(); //7:事务回滚 session.getTransaction().rollback(); } } @Test public void testPersist(){ Session session = getSession(); try{ //4:开启事务 session.beginTransaction(); //session.getTransaction().begin(); //5:增删改查操作 Student student = new Student(); student.setStName("muniuliuma");student.setStAge(18); session.persist(student); //jpa提供的接口 //6:事务提交 session.getTransaction().commit(); }catch(Exception e){ e.printStackTrace(); //7:事务回滚 session.getTransaction().rollback(); } } @Test public void testDel(){ Session session = getSession(); try{ //4:开启事务 session.beginTransaction(); //session.getTransaction().begin(); //5:增删改查操作 Student student = new Student(); student.setStId(23); //student.setStName("muniu");student.setStAge(18); session.delete(student); //删除方法是根据对象的id来操作的 //6:事务提交 session.getTransaction().commit(); }catch(Exception e){ e.printStackTrace(); //7:事务回滚 session.getTransaction().rollback(); } } @Test public void testUpdate(){ Session session = getSession(); try{ //4:开启事务 session.beginTransaction(); //session.getTransaction().begin(); //5:增删改查操作 Student student = new Student(); student.setStId(22); student.setStName("liuma");student.setStAge(18); session.update(student);//修改方法是根据对象的id来操作的 //6:事务提交 session.getTransaction().commit(); }catch(Exception e){ e.printStackTrace(); //7:事务回滚 session.getTransaction().rollback(); } } @Test public void testSaveOrUpdate(){ Session session = getSession(); try{ //4:开启事务 session.beginTransaction(); //session.getTransaction().begin(); //5:增删改查操作 Student student = new Student(); student.setStId(25); student.setStName("muniu&liuma");student.setStAge(18); session.saveOrUpdate(student);//如果对象没有id,则为增加操作,如果有id,则为修改操作 //6:事务提交 session.getTransaction().commit(); }catch(Exception e){ e.printStackTrace(); //7:事务回滚 session.getTransaction().rollback(); } } @Test public void testGet(){ Session session = getSession(); try{ //4:开启事务 session.beginTransaction(); //session.getTransaction().begin(); //5:增删改查操作 Student student = session.get(Student.class, 160); if(student!=null) System.out.println(student.getStName()+"---"+student.getStAge()); //6:事务提交 session.getTransaction().commit(); }catch(Exception e){ e.printStackTrace(); //7:事务回滚 session.getTransaction().rollback(); } } @Test public void testLoad(){ Session session = getSession(); try{ //4:开启事务 session.beginTransaction(); //session.getTransaction().begin(); //5:增删改查操作 Student student = session.load(Student.class, 160); if(student!=null) System.out.println(student.getStName()+"---"+student.getStAge()); //6:事务提交 session.getTransaction().commit(); }catch(Exception e){ e.printStackTrace(); //7:事务回滚 session.getTransaction().rollback(); } }}
阅读全文
0 0
- Hibernate环境配置与实战Demo
- Hibernate环境搭建与配置
- Hibernate环境配置与实现
- MyEclipse+Struts+Hibernate环境配置与开发
- hibernate环境配置与单表操作
- Spring+Springmvc+Hibernate环境搭建与配置
- hibernate配置实战001
- Mac平台下QT环境配置与Demo测试
- QT4与VS2005 整合环境配置实战(测试OK)
- Maven3实战笔记环境配置与使用入门(一)
- 云服务器实战:aliyun服务器环境配置与管理
- Maven3实战笔记01环境配置与使用入门
- MongoDB实战-生产环境中分片的部署与配置
- mxnet 配置与 demo
- mxnet 配置与 demo
- hibernate实战2-基本配置
- Hibernate之环境搭建及demo
- 配置Hibernate环境
- php杂谈【基础篇】之_7.PHP涉及的所有英文单词
- php杂谈【基础篇】之_8.PHP特殊函数及其用法
- php杂谈【基础篇】之_9.PHP魔术方法
- php杂谈【基础篇】之_10.常用函数
- php杂谈【基础篇】之_11.理解PHP中this,self,parent三个关键字用法
- Hibernate环境配置与实战Demo
- php杂谈【基础篇】之_12.php知识点合集
- php杂谈【基础篇】之_13.PHP学习路线图
- php杂谈【基础篇】之_14.PHP页面跳转
- php【初级篇】之_1.PHP集成开发环境
- php【初级篇】之_2.数据类型+虚拟主机配置步骤
- php【初级篇】之_3.判断 循环 函数
- php【初级篇】之_4.php-mysql操作
- php【初级篇】之_5.php-在线HTML编辑器:kindeditor、FCKeditor