Hibernate 4.3.11快速入门案例
来源:互联网 发布:正在安装windows卡住 编辑:程序博客网 时间:2024/06/05 11:35
Hibernate 4.3.11快速入门案例
- Hibernate 4311快速入门案例
- 导包列表
- 映射文件userhbmxml
- 核心配置文件Hibernatecfgxml
- Hibernate工具类HibernateUtiljava
- 功能测试增删改查
最近学习Hibernate的时候,教程是以Hibernate3为背景讲的,由于教程比较老,但是又讲的很好,反正原理的东西相通,就决定自己选Hibernate4为实践。
在抽取工具类的时候,遇到一系列问题,因为获取SessionFactory的方法发生了一些变化,并且按照官方文档中的示例居然也获取不到SessionFactory。所以自己在网上找了很久解决方案。
我的环境:JDK8 + Hibernate4.3.11 + c3p0 + MySQL,经过测试所有功能均使用正常。
但是无法排除下面这个错误:
INFO: HHH000424: Disabling contextual LOB creation as createClob() method threw error : java.lang.reflect.InvocationTargetException
下面是一个完整的Hibernate4.3.11的工具类,配置文档,映射文档的信息。
导包列表
我在配置c3p0时少导了个包导致出现奇怪的异常,下面这些包几乎都是必备的:
映射文件:user.hbm.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 package="cn.lim.user.domain"> <class name="User" table="user"> <!-- 配置唯一标识 --> <id name="userID" column="userID"> <generator class="native"></generator> </id> <!-- 配置属性映射 --> <property name="username" column="username" type="java.lang.String" length="30"/> <property name="logonname" column="logonname" type="java.lang.String" length="30"/> <property name="logonpassword" column="logonpassword" type="java.lang.String" length="30"/> <property name="sex" column="sex" type="java.lang.String" length="10"/> <property name="telephone" column="telephone" type="java.lang.String" length="20"/> </class></hibernate-mapping>
核心配置文件:Hibernate.cfg.xml
<?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> <!-- 配置数据库连接的基本信息: --> <property name="hibernate.connection.driver_class"> com.mysql.jdbc.Driver </property> <property name="hibernate.connection.url"> jdbc:mysql:///javaee_hibernate </property> <property name="hibernate.connection.username">root</property> <property name="hibernate.connection.password">root</property> <!-- 配置Hibernate方言,用于针对不同数据库生成不同底层SQL语句 --> <property name="hibernate.dialect"> org.hibernate.dialect.MySQLDialect </property> <!-- 显示SQL --> <property name="show_sql">true</property> <!-- 格式化SQL --> <property name="hibernate.format_sql">true</property> <!-- 关闭事物自动提交 --> <property name="hibernate.connection.autocommit">false</property> <!-- hbm:映射 to DDL --> <!-- update:如果数据库中没有表,创建一个新的表,如果有,直接使用这个表,并可以更新表的结构。 --> <property name="hibernate.hbm2ddl.auto">update</property> <!-- C3P0连接池设定--> <!-- 使用c3po连接池 配置连接池提供的供应商--> <property name="connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider </property> <!--在连接池中可用的数据库连接的最少数目 --> <property name="c3p0.min_size">5</property> <!--在连接池中所有数据库连接的最大数目 --> <property name="c3p0.max_size">20</property> <!--设定数据库连接的过期时间--> <!--以秒为单位,如果连接池中的某个数据库连接处于空闲状态的时间超过了timeout时间,就会从连接池中清除 --> <property name="c3p0.timeout">120</property> <!--每3000秒检查所有连接池中的空闲连接 以秒为单位--> <property name="c3p0.idle_test_period">3000</property> <mapping resource="cn/lim/hibernate4/demo/user.hbm.xml" /> </session-factory></hibernate-configuration>
Hibernate工具类:HibernateUtil.java
package cn.lim.hibernate4.utils;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.boot.registry.StandardServiceRegistryBuilder;import org.hibernate.cfg.Configuration;import org.hibernate.service.ServiceRegistry;public class HibernateUtil { // 1.Hiberante框架加载核心配置文件(有数据库连接信息) public static Configuration configuration; public static SessionFactory sessionFactory; public static ServiceRegistry serviceRegistry; // 使用静态代码块初始化类 - 加载核心配置文件以及创建一个sessionFactory static{ configuration = new Configuration().configure(); serviceRegistry=new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()).build(); sessionFactory = configuration.buildSessionFactory(serviceRegistry); } public static Session openSession(){ return sessionFactory.openSession(); }}
功能测试,增删改查
package cn.lim.hibernate4.demo;import org.hibernate.Session;import org.hibernate.Transaction;import org.junit.Test;import cn.lim.hibernate4.utils.HibernateUtil;import cn.lim.user.domain.User;public class HibernateTest { @Test // 添加记录操作 public void test1() { // 创建一个持久化对象 User user = new User(); user.setUsername("超级管理员"); user.setLogonname("admin"); user.setLogonpassword("123"); user.setTelephone("110"); user.setRemark("这是超级管理员帐号"); // 获取一个session Session session = HibernateUtil.openSession(); // 创建一个事务 Transaction tx = session.beginTransaction(); // 操作:把user存入数据库 session.save(user); // 事物提交 tx.commit(); // 释放资源 session.close(); } @Test // 查询操作 public void test2() { // 获取session Session session = HibernateUtil.openSession(); // 获取事务 Transaction tx = session.beginTransaction(); // 查询操作-get方法 User user1 = (User) session.get(User.class, 2); // 查询操作-load方法 User user2 = (User) session.load(User.class, 1); System.out.println("user1: " + user1); System.out.println("user2: " + user2); // 事务提交 tx.commit(); // 释放资源 session.close(); } @Test // 修改记录 public void test3() { // 获取session Session session = HibernateUtil.openSession(); // 获取事务 Transaction tx = session.beginTransaction(); // 操作:修改数据 User user = new User(); user.setUserID(1); user.setUsername("张三"); session.update(user); // 事务提交 tx.commit(); // 释放资源 session.close(); } @Test // 删除记录 public void test4() { // 获取session和事务 Session session = HibernateUtil.openSession(); Transaction tx = session.beginTransaction(); // 操作:删除第一条记录 - 自动方式(先查询再删除) User user = (User) session.get(User.class, 1); session.delete(user); // 事务提交,释放资源 tx.commit(); session.close(); }}
0 0
- Hibernate 4.3.11快速入门案例
- hibernate快速入门案例
- Hibernate快速入门案例——手动增加记录
- Hibernate之入门案例
- hibernate 入门案例
- Hibernate框架入门案例
- hibernate入门简单案例
- hibernate入门案例
- hibernate入门案例
- Hibernate入门案例
- Hibernate配置入门案例
- Hibernate-入门案例
- Hibernate入门配置案例
- Hibernate入门案例
- Hibernate入门案例
- Hibernate快速入门案例——让hibernate到映射文件到表的转换
- Hibernate快速入门
- Hibernate 快速入门
- 常用算法-回朔法
- COM---调度接口与自动化
- Java连接数据库的四种方式
- 浏览器好用的插件推荐(包括安装教程)
- 常用的人脸库
- Hibernate 4.3.11快速入门案例
- 使用spring配置C3P0连接池 并通过手动获取spring的ApplicationContext和bean对象使用库连接。
- 谨慎能捕千秋蝉(二)——CSRF
- 如何去除同一行的文本输入框和按钮间的间隙
- activity切换动画修改后,运行后不生效的解决
- 第002天 功能分类
- JDBC-ODBC桥连接方式连接数据库
- 168. Excel Sheet Column Title
- 重拾算法之剑指Offier——树的子结构