【笔记——hibernate】关于Hibernate 4.3.5的初步认识

连接数据库的一个框架,Orm框架的一种。

一、下载:http://hibernate.org/

二、配置:

1、导入必须的包

hibernate-release-4.3.5.Final\lib\required(必须的jar)

如果需要时用annotataion的话,导入:

hibernate-release-4.3.5.Final\lib\jpa(jap相关的jar)

hibernate-release-4.3.5.Final\lib\jpa-metamodel-generator(jpa生成器)

javaWeb放到WebContent\WEB-INF\lib目录。

javaSe放到任意文件夹,然后导入构建路径。

2、配置hibernate.cfg.xml

放到src的根目录,基本内容如下

<?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>

<!--
JDBC连接设置 -->

<property
name="connection.driver_class">com.mysql.jdbc.Driver</property>

<property name="connection.url">jdbc:mysql://localhost/dinnersystem</property>

<property name="connection.username">root</property>

<property
name="connection.password">303269789</property>

<!--
连接池配置,使用c3p0连接池 -->

<property name="hibernate.c3p0.max_size">20</property>

<property name="hibernate.c3p0.min_size">1</property>

<property name="hibernate.c3p0.timeout">1800</property>

<property
name="hibernate.c3p0.max_statements">50</property>

<property
name="hibernate.c3p0.idle_test_period">3000</property>

<!--
数据库语言 -->

<property
name="dialect">org.hibernate.dialect.MySQLDialect</property>

<!--
sql设置 -->

<property name="show_sql">true</property>

<property name="format_sql">true</property>

<!--
持久类设置所有需要持久的类要在这里标明,以下是针对annotation注释的类 -->

<mapping class="com.kirning.android.entity.Test" />

</session-factory>

</hibernate-configuration>

3、配置持久类

只存在属性和getter/setter方法的类,其中需要在类名上加Annatation标示@Entity表示这是一个持久类。以及在id上添加@Entity,标示这是一个id对应数据库中的关键字,每一个持久类都必须在hibernate.cfg.xml中进行备案,否则抛出异常,无法使用。

@Entity

public class Test {

private int id;

private String name;

private String pass;

@Id

public int getId() {

return id;

}

public void setId(int id)
{

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getPass() {

return pass;

}

public void setPass(String pass) {

this.pass = pass;

}

}

4、如需使用log4j,则下载

apache-log4j-1.2.17         http://pan.baidu.com/share/link?shareid=121565833&uk=2047106924

slf4j-1.7.7                           
http://pan.baidu.com/share/link?shareid=123250651&uk=2047106924

apache-log4j-1.2.17/log4j-1.2.17.jar

slf4j-1.7.7/slf4j-log4j12-1.7.7.jar

进入hibernate-release-4.3.5.Final\project\etc把

log4j.properties放到src根目录即可。

三、使用

1、获取Session

public class HibernateUtil
{

private
static final SessionFactory
sessionFactory = buildSessionFactory();

private
static SessionFactory buildSessionFactory() {

try {

//
载入设置

Configuration configuration = new
Configuration().configure();

//
创建serviceRegistry

ServiceRegistry serviceRegistry = new
StandardServiceRegistryBuilder()

.applySettings(configuration.getProperties()).build();

//
获取sessionFactory

SessionFactory sessionFactory = configuration

.buildSessionFactory(serviceRegistry);

return sessionFactory;

} catch
(Throwable ex) {

System.err.println("Initial SessionFactory creation failed." + ex);

throw new ExceptionInInitializerError(ex);

}

}

public
static SessionFactory getSessionFactory() {

return
sessionFactory;

}

}

可建立一个这样的工具类,方便获取Session 这是根据4.3.5官方文档中的事例以及网上的查询得来的结果,不知道为什么官方的用不了,有错误。

Session里封装着hibernate对数据库访问的方法,所有必需要获得Session。

1、存储:

首先,需要实例化一个持久类。并使用Setter方法把数据放进去。然后调用session的save方法。

e.g:

public class TestPost {

public void
test(){

Test test =
new Test();

test.setName("test");

test.setPass("test");

//获得Session

Session se =
HibernateUtil.getSessionFactory().openSession();

//开始事务处理

se.beginTransaction();

//保存到数据库

se.save(test);

//提交事务

se.getTransaction().commit();

}

}

2、查询:

a)、根据关键字查询:

public class TestPost {

public void
test(){

//获得Session

Session se =
HibernateUtil.getSessionFactory().openSession();

//开始事务处理

se.beginTransaction();

//0是id,hibernate会根据id把数据拿出来并填充到Test类的各个属性返回一个Object对象,强转即可。

Test test
= (Test)se.get(Test.class, 0);

//提交事务

se.getTransaction().commit();

}

}

b)、根据关键字查询

public
class TestPost {

public
void test(){

//获得Session

Session se =
HibernateUtil.getSessionFactory().openSession();

//关键字

String key = "tom";

//开始事务处理

se.beginTransaction();

//创建Criteria对象

Criteria cr =
se.createCriteria(Test.class);

//添加条件

cr.add(Restrictions.eq("name", key));

//返回结果集

List<Test> list = cr.list();

//提交事务

se.getTransaction().commit();

}

}

c)获取前10条数据

public
class TestPost {

public void
test(){

//获得Session

Session se =
HibernateUtil.getSessionFactory().openSession();

//开始事务处理

se.beginTransaction();

//创建Criteria对象

Criteria cr =
se.createCriteria(Test.class);

//这里使用了HQL语句

Query query =
se.createQuery("from MenuTable order by id");

query.setFirstResult(0);

query.setMaxResults(10);

//返回结果集

List<Test> list = cr.list();

//提交事务

se.getTransaction().commit();

}

}

3、修改数据

这个的话……先查询出来,在保存进去就好(*^__^*) !

时间: 2024-10-19 15:36:21

【笔记——hibernate】关于Hibernate 4.3.5的初步认识的相关文章

[原创]java WEB学习笔记95:Hibernate 目录

本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 -----------------------------------------------------------------------------------------------------------------

hibernate学习笔记02-- eclipse 下 hibernate+mysql 的实现。

hibernate 环境的配置步骤: 加入 hibernate 所需的 jar 包,并将这些 jar 添加到 project 中,如图: hibernate.cfg.xml 的建立.hibernate 的 hibernate.cfg.xml 配置文件默认在 project/src 目录下,如图: hibernate.cfg.xml 中的内容如下(当然,这是从 hibernate 的参考文档中拷贝过来的,还未修改): <?xml version='1.0' encoding='utf-8'?>

JavaEE学习笔记之SSH—Hibernate(2)

对象关系映射 ORM 解决的主要问题就是对象-关系的映射,域模型和关系模型都分别建立在概念模型的基础上,域模型是面向对象的,关系模型是面向关系的,一般情况下,一个持久化类和一个表对应,类的每个实例对应表中的一条记录. (可能存在类中多个属性对应一列的情况,映射组成关系) ORM中间件采用元数据来描述对象-关系映射细节,元数据通常采用XML格式,并且存放在专门的对象-关系映射文件中,如果希望把ORM软件集成到自己的java应用中,用户首先要配置对象-关系映射文件(**.hbm.xml). sess

Hibernate配置文件——hibernate.cfg.xml

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <

Rhythmk 学习 Hibernate 03 - Hibernate 之 延时加载 以及 ID 生成策略

Hibernate 加载数据 有get,跟Load 1.懒加载: 使用session.load(type,id)获取对象,并不读取数据库,只有在使用返回对象值才正真去查询数据库. ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 @Test    public void  test1()    {        Session session = null;         try {             session = Hiber

Rhythmk 学习 Hibernate 02 - Hibernate 之 瞬时状态 离线状态 持久化状态 三状态

by:rhythmk.cnblogs.com 1.Hibernate 三种状态: 1.1.三种定义(个人理解,不一定准确):  瞬时状态(transient):    不被session接管,且不存在数据库中的对象的状态,类似于新New一个对象  离线状态 (detached):    数据库中存在而不被session接管  持久化状态(persistent): 对象被session管理且数据库中存在此对象 1.2. 状态之间转换关系图 2 .状态转换以及Hibernate数据库执行过程详解:

异常:org.hibernate.HibernateException: &#39;hibernate.dialect&#39; must be set when no Connection available

spring整合hibernate报了这样一个异常,一直以为是dialect参数的问题,最后发现原来是配数据源时,数据库的名字写错了....... 找了半天,重新写了配置文件没出问题,但就不知道这个文件哪里出问题了.配置文件里面这种细节一定要注意. 版权声明:本文为博主原创文章,未经博主允许不得转载. 异常:org.hibernate.HibernateException: 'hibernate.dialect' must be set when no Connection available

Rhythmk 学习 Hibernate 04 - Hibernate 辅助工具 之 JBoos Tool

1.安装JBoos Tool Help -> Install new Software 然后添加: http://download.jboss.org/jbosstools/updates/development http://download.jboss.org/jbosstools/updates/stable/ 稍等一刻,选择 Hibernate tool 下一步 ,完成后重启Eclipse即可. 2.项目配置文件生成: 2.1 新建一项目,项目右键生成相关配置 然后如图: 2.2 此处需

Rhythmk 学习 Hibernate 05 - Hibernate 表间关系 [ManyToOne,OneToMany]

1.项目结构: 1.1.场景说明: 一个订单,包含多个产品 1.2.类文件: Order.java ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 package com.rhythmk.model; import java.util.Date; public

Rhythmk 学习 Hibernate 05 - Hibernate 表间关系 [One To One]

1.One To One 单相 背景: 古代一个老婆  只能关联一个老公 husband.java ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 package com.rhythmk.model; public class husband {          public Integer getHusbandId() {         return husbandId;     }     public void setHusba