Hibernate 4.3.11快速入门案例

hibernate-4.3.11finaldialect.jar Hibernate人大金仓jar包 立即下载

Hibernate 4.3.11快速入门案例

最近学习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时少导了个包导致出现奇怪的异常,下面这些包几乎都是必备的:
lib.JPG

映射文件: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();

    }

}
kingbaseV8驱动jar包 人大金仓KingbaseES-V8驱动jar包,支持jdk1.6、jdk1.7、jdk1.8 立即下载

相关推荐

hibernate-release-4.3.11.Final.zip

Hibernate 源码包,方便被qiang同学下载

Hibernate从4.3.11.Final到5.0.2.Final时NamingStrateg问题

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34184158的博客 248

hibernate-release-4.3.11.Final.lib.required.zip

hibernate-release-4.3.11.Final的jar包

hibernate4.3.11.Final session factory获取

//测试通过,Configuration的buildSessionFactory()已经弃用,最好还是使用下面的Configuration configuration = new Configuration(); configuration.configure(); ServiceRegistry serviceRegistry = new StandardServiceRegistryBuild

mmoooodd的专栏 614

BlenderGis安装碰到问题,ImageIO、无法点击和地图不加载

BlenderGis安装碰到问题,ImageIO、无法点击和地图不加载问题

qq_45176349的博客 4964

Anomalib实战:5分钟搞定图像异常检测模型训练(附完整代码)

本文提供了一份基于Anomalib框架的图像异常检测快速实战指南。文章详细介绍了从环境搭建、数据准备到模型训练与推理的完整流程,重点推荐了训练速度快、效果稳定的PatchCore模型,并附带了可运行的完整代码,旨在帮助开发者快速上手工业质检等实际应用。

weixin_29039773的博客 420

Hibernate进行对象的增删改查

首先我们看看hibernate手动配置步骤  (这个了解一点就可以了,以后是不会自己全部手动配置的) 1、    创建WEB项目 2       下载hibernate-release-4.3.11.Final.zip,并解压。 3       将hibernate必须的包加入lib 4        打开hibernate-release-4.3.11.Final\lib\requir...

weixin_34279579的博客 138

Verilog基本代码结构及常用语句always、begin...end解读

Verilog基本代码结构及常用语句always、begin...end解读 线性反馈以为寄存器(LFSR)

weixin_62380586的博客 1万+

Hibernate 命名规范从4.3.11.Final到5.0.2.Final时 ImprovedNamingStrategy问题

升级hibernate版本时, 原有数据库的表字段名都是带有下划线的如:employee_id,first_name等但升级hibernate后数据库映射出错,经过查找原来是Hibernate5.1相关配置变了.解决的方法: 建新一个类实现PhysicalNamingStrategy方法,重写自已的命名规则以下是我的xml文件配置 关键代码行:&lt;!--建表的命名规则Hibernate5.0....

vcfriend的专栏 1136

STM32单片机:驱动ADS1115四个通道全开程序

本文介绍了德州仪器(TI)的ADS1115高精度16位模数转换器(ADC)及其应用实现。该芯片具有16位分辨率、可编程增益放大器(PGA)和低功耗特性,支持±0.256V至±6.144V量程。文章提供了完整的C语言驱动代码,包括初始化、配置寄存器读写、单次/连续转换模式设置、电压值读取等功能实现。代码通过I2C接口与ADS1115通信,支持多通道选择和不同PGA设置,可实现高精度模拟信号采集。该方案适用于需要精密测量的嵌入式系统,如传感器数据采集等应用场景。

weixin_42122070的博客 689

大模型面试题52:LLM如果在训练过程中loss值出现spike应该怎么办?

小白急救:停更→回滚→降LR→裁剪梯度,先保住训练不崩溃;进阶排查:查数据→查优化器→查硬件,找到spike的根因并解决;深层预防:预处理保守配置+训练中实时监控,从源头规避spike。先止损,再溯源,最后预防。

叫好与叫座虽然不是对立面,但想在同一个作品中达到双重效果很难。 1168

在Eclipse上搭建SSH框架(Struts 2.5.1 + Spring 4.3.0 + Hibernate 4.3.11)

在Eclipse下搭建SSH开发环境(Struts 2.5.1 + Spring 4.3.0 + Hibernate 4.3.11)

fengwusan的专栏 2263

禾赛PandarXT-16/阿努比LpmsIG1运行lio-sam

课题是多传感器融合,将GNSS/INS/LIDAR做融合定位导航,故考虑使用lio-sam开源算法,在此记录一下我在适配传感器数据时遇到的一些问题;

qq_44705939的博客 2960

Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案一

前面我们已经集成了Spring4.2.5+Hibernate4.3.11这两个框架,现在是时候集成web层框架——Struts1.3.8了。本文是是建立在Spring4.2.5+Hibernate4.3.11组合开发基础之上的。 我们首先向SSH项目中导入Struts1.3.8框架所需的jar文件,如图所示: 注意:Hibernate4.3.11中已经存在一个antlr-2.7.7.jar

李阿昀的博客 1834

STM32 AFIO时钟开启时机与复用功能解析

在嵌入式系统开发中,GPIO复用是微控制器外设配置的核心技术之一。通过复用功能,单个物理引脚可以动态切换不同功能模式,如USART通信或普通IO。其实现原理依赖于芯片内部的时钟树架构和寄存器配置机制。AFIO(Alternate Function I/O)模块作为STM32的特色设计,专门处理引脚重映射、外部中断配置等高级功能。正确理解复用功能与AFIO时钟的关系,能显著提升嵌入式开发效率,避免资源浪费。本文以STM32为例,结合引脚重映射和USART配置等典型场景,详解AFIO时钟的实际应用规范与优化实践

weixin_42389113的博客 578

Sigrity System SI Parallel Bus Analysis模式进行DDR3仿真分析操作指导-单个颗粒

Default Strobe Offset:DQS默认偏移时间,自动填充为0.5ns,即DQS默认偏移1/2UI,DQS滞后于DQ 1/2UI,让建立保持时间均分。WLO:写平衡偏移的数值,DataL是0ps,DataU是500ps,是根据WLOSkew自动定义的,可以认为是WLOSkew取整,也可以根据需要手动调整数值。注意AddCmd的UI=T,这里的Data Rate仍然是DQ的速率,并不是地址线的速率,地址线的速率=1/UI=1/2ns=0.5Gbps。

weixin_54787054的博客 365

(转)Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案一

http://blog.csdn.net/yerenyuan_pku/article/details/52888808 前面我们已经集成了Spring4.2.5+Hibernate4.3.11这两个框架,现在是时候集成web层框架——Struts1.3.8了。本文是是建立在Spring4.2.5+Hibernate4.3.11组合开发基础之上的。 我们首先向SSH项目中导入Struts1.3.8...

weixin_33885253的博客 77

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

自己的Hibernate4搭建

Hibernate4.3.11 Anotation版本搭建 第一步:下载Hibernate4 需要的jar包 第二步:在Myeclipse中新建web工程如hibernate4,然后将上面提到的jar包导入进去 第三步:在hibernate4的工程目录下新建hibernate.cfg.xml文件,并在其中加如下内容          "-//Hibernate/Hibe

lswsmj的专栏 396

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Hibernate开发环境搭建

一、下载Hibernate包的下载 官网地址:http://hibernate.org/orm/ 下载版本:hibernate-release-4.3.11.Final 二、Hibernate jar包介绍 包名 用途 hibernate-core-...

weixin_30511039的博客 74

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Hibernate入门第一讲——Hibernate框架的快速入门

Hibernate框架介绍什么是Hibernate我们可以从度娘上摘抄这样有关Hibernate的介绍: Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。Hibernate可以

李阿昀的博客 12万+

Hibernate 框架入门

一、Hibernate框架介绍 什么是Hibernate 我们可以从度娘上摘抄这样有关Hibernate的介绍: Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。Hi...

热心网友 5万+

Hibernate4.3.11遇到的问题

由于之前用的是hibernate3,在换成hibernate4.3.11的时候遇到了不少问题:配置log4j日志按照hibernate3那样导入所需jar包,可是抛出异常了:java.lang.NoSuchFieldError:TRACE 上网查了一下,是因为log4j的版本不匹配的原因,我使用的log4j是1.2.9,换成1.2.17就行了 http://coders-kitchen.com/

msidolphin的博客 743

Myeclipse 10.0 + Hibernate 4.3.5 连接 Oracle 11G

今天从下午开始按照J2EE企业应用实战整合Myeclipse 10.0 + Hibernate 4.3.5 连接 Oracle 11G,在网上找了很多资料,到晚上才搞定。有几个地方要特别注意,我在代码中会详细讲解。 现在上完整的代码: 先按照书里的要求引入%\hibernate-release-4.3.5.Final\lib\required下面所有的jar包。 文件1(News

yz2325001的专栏 1119

Hibernate快速入门

Hibernate框架介绍 什么是Hibernate 我们可以从度娘上摘抄这样有关Hibernate的介绍: Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。Hibern...

龚道松 176
上一篇: Hibernate中的持久化类
下一篇: Hibernate4 关联关系的映射案例
empty0.0
博客等级 码龄19年 20粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值