- 浏览: 153570 次
- 性别:
- 来自: 大连
文章分类
最新评论
-
fddjxllren:
session.find()是不支持动态绑定参数的.要使用it ...
Hibernate查询之list/iterator -
xiaofeiyang:
http://svn.apache.org/repos/asf ...
struts,hibernate,spring 版本控制svn的URL地址 -
peterxiemin:
emp在建立的时候,报无效的月份,为什么 ?
oracle的练习表---employee -
java_bigniu:
...
Hibernate查询之list/iterator -
lanhai921:
学习下,谢谢分享。
itext基本用法
创建第一个Hibernate实例:
- 创建实例数据库:名为hibernatetest;及库表tUser,tUser中包含“id”,“name”两个字段;
- 构建Hibernate基础代码:POJO类和Hibernate映射文件;
POJO类就是无格式普通的java类,可以简单的理解为一个不包含逻辑代码的值对象(Value Object,简称VO),从数据库层来看,POJO作为数据实体的对象化表现形式,也称实体类。数据库tUser与其相对应的实体类命名为:Tuser.java
例:
public class Tuser implements Serializable{ private Integer id; private String name; public Tuser() { } .... }
tUser类在这里体现的是ORM中的Object层的语义,即对“用户”实体的抽象,它包含了“用户”相关属性。
tUser表是关系型数据库表,用于存储“用户”数据,根据Object和数据库定义,就可以通过映射文件建立两者之间的关联(映射)关系,这就是所谓的Mapping。
Hibernate是一种“对象---关系型数据库映射组件”,它使用映射文件将对象(object)与关系型数据(Relational)相关联。在Hibernate中通常用"*.hbm.xml"作为后缀;
构建Hibernate基础代码,有很多工具,包括常用的MyEclipse中也有,新手建议手工编写;
- 添加Hibernate所需的jar包:
hibernate-distribution-3.5.3-Final/lib/required下左右jar文件;
hibernate下的hibernate3.jar;
- Hibernate配置
Hibernate配置文件主要用于配置数据库连接和Hibernate运行时所需的各种属性;Hibernate支持XML格式的配置文件和传统的.properties文件配置方式,建议用XML配置文件。XML的结构清晰,可读性好,可以直接对映射文件加以配置并由Hibernate自动加载,而.properties文件的方式,无法做到这一点(必须在程序中通过编码进行加载);
Hibernate配置文件名默认为:“hibernate.cfg.xml”(Hibernate.properties),Hibernate初始化会在CLASSPATH中寻找这个文件,并读取信息,为后期数据库操作做好准备;不推荐Hibernate内在连接池;使用第3方连接池!
典型的Hibernate配置文件如下:
<?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"> <hibernate-configuration> <session-factory> <!-- Database connection settings --> <property name="connection.driver_class">org.hsqldb.jdbcDriver</property> <property name="connection.url">jdbc:hsqldb:hsql://localhost</property> <property name="connection.username">sa</property> <property name="connection.password"></property> <!-- SQL dialect --> <property name="dialect">org.hibernate.dialect.HSQLDialect</property> <!-- Enable Hibernate's automatic session context management --> <property name="current_session_context_class">thread</property> <!-- Disable the second-level cache --> <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property> <!-- Echo all executed SQL to stdout --> <property name="show_sql">true</property> <!-- Drop and re-create the database schema on startup --> <property name="hbm2ddl.auto">update</property> <mapping resource="org/hibernate/tutorial/domain/Event.hbm.xml"/> </session-factory> </hibernate-configuration>
日志配置:采用log4j;在hibernate/lib/required下有slf4j-api-1.5.8.jar,这只是api需要为其添加实现:slf4j-log4j12-1.5.8.jar,使用slf4j-log4j,必须添加log4j的实现:log4j-1.2.16.jar;然后从/project/etc下的log4j.properties复制到项目的SRC下,log4j.properties中需要这样的配置即可:
log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target=System.out log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n log4j.rootLogger=warn, stdout log4j.logger.org.hibernate=info log4j.logger.org.hibernate.type=info log4j.logger.org.hibernate.tool.hbm2ddl=debug
我们需要一个Hibernate工具类(HibernateUtil.java ),来创建Session:
import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; public class HibernateUtil { private static final SessionFactory sessionFactory = buildSessionFactory(); private static SessionFactory buildSessionFactory() { try { return new Configuration().configure().buildSessionFactory(); } catch (Throwable ex) { System.err.println("Initial SessionFactory creation failed." + ex); throw new ExceptionInInitializerError(ex); } } public static SessionFactory getSessionFactory() { return sessionFactory; } }
以上完成了基础代码和Hibernate所需要的配置文件,感受下Hibernate所提供的功能,体验下Hibernate强大的功能:
public static void saveTest() { Session session = HibernateUtil.getSessionFactory().getCurrentSession(); session.beginTransaction(); Tuser tUser = new Tuser(); tUser.setName("keith"); session.save(tUser); session.getTransaction().commit(); }
可以看到控制台上的输出:
Hibernate: insert into tUser(uName) values(?)
看下数据库,发现tUser中会多条数据;
在java中如果要进行数据库访问,一般均通过JDBC进行,期间需要进行SQL语句的编写,并通过JDBC执行这些SQL语句;通过上面例子,我们可以看出基于Hibernate的数据插入操作并不需要指定对应的SQL语句,也能完成此操作,但是代码中仅仅先用实体类的set()方法,然后session.save()操作就完成了;这正是Hibernate优势所在,它对JDBC进行了妥善封装,会自动根据对象和表之间的映射关系,将对象操作转换为SQL加以执行;
在基于JDBC的实际开发中,还需要考虑更多的问题,如:连接的关闭策略(一旦程序中出现连接泄漏,对于整个程序带来的后果可能是致命的),连接池和Statement缓存的应用等;另外一旦库表或表字段发生更改意味着开发人员要改变其SQL和其相关代码;
- slf4j-log4j12-1.5.8.jar (9.5 KB)
- 下载次数: 2
- hibernateRequired.rar (1.7 MB)
- 下载次数: 1
- log4j-1.2.16.jar (470.2 KB)
- 下载次数: 0
- hibernate3.jar (3.7 MB)
- 下载次数: 0
发表评论
-
Hibernate之分页
2011-01-09 17:30 905在Hibernate中,通过对不同数据库的统一接口设计,实现了 ... -
hibernate之结果集排序
2011-01-09 17:07 1342无序集和有序集,是针对hibernate数据持久过程中,是否保 ... -
hibernate之Collection类型
2011-01-09 16:42 1445Collection类型: ... -
Hibernate之海量数据操作
2011-01-09 09:59 1065批量添加 在实 ... -
hibernate之数据存储
2011-01-07 16:33 7171,session.save(); 方法用于实体对象到数 ... -
hibernate之延迟加载(Lazy Loading)
2011-01-07 15:43 1195避免在某些情况下,关 ... -
Hibernate查询之list/iterator
2011-01-07 14:13 6357在Hibernate3中将Session.find(),Ses ... -
Hibernate之查询缓存(The Query Cache)
2011-01-07 09:21 1033查询的结果集也可以被缓存。只有当经常使用同样的参数进行查询时, ... -
hibernate之数据加载---Session.get/load
2011-01-06 16:54 994Session.get/load() 都是根 ... -
hibernate之乐观锁(Optimistic Locking)
2011-01-06 16:34 1666相对于悲观锁,乐观锁采取了更加宽松的加锁机制,悲观锁大多数是依 ... -
Hibenate之悲观锁(Pessimistic Locking)
2011-01-06 15:34 1374什么是“锁”? 业务逻辑的实现过程中,往往需要保证数据的排他 ... -
Hibernate之事务管理
2011-01-06 15:00 815Hibernate是JDBC的轻量级封装,本身不具备事务管理能 ... -
初识---事务管理
2011-01-06 14:28 798何为“ 事务管理 ”? ... -
Hibernate之缓存同步策略
2011-01-06 13:43 1310缓存同步决定了数据对 ... -
Hibernate之数据缓存
2011-01-06 11:22 1096Hibernate数据缓存(cache ... -
认识数据缓存
2011-01-06 10:36 952数据缓存概述:在特定硬件基础上,缓存(Cache)往往是提升系 ... -
hibernate之脏数据检查
2011-01-06 09:54 2338HIbernate中有个名词---脏数据(dirty Data ... -
hibernate之实体对象生命周期
2011-01-06 09:16 993在Hibernate的应用中,实体对象的生命周期,是一个关键的 ... -
Hibernate之数据加载方式
2011-01-05 23:09 1124Hibernate 的数据加载方式: 在JDBC的操作中,利 ... -
Hibenrate之多对多关联
2010-12-31 16:39 1119Hibernate多对多关联可以分成单向和双向,多对多关系会借 ...
相关推荐
第3章 快速起步 3.1 准备工作 3.2 Hibernate配置 3.3 日志配置 3.4 第一段代码 3.5 代码初解 第4章 Hibernate基础 4.1 Hibernate基础语义 4.2 基础配置 4.3 Hibernate O/R映射 4.4 数据关联 4.5 ...
Hibernate工具、XDoclet模板配置以及Hibernate的益友iBatis用法,还以卡片的形式列出了本书中所用的工具及软件,附录最后一部分是“快速启动代码”,供读者对比与参考,也给初学者提供了一个快带起步的基础。...
**标题解析:** "hibernate所需要的所有jar包" 指的是...总的来说,这个压缩包是一个全面的Hibernate开发环境起步包,包含运行Hibernate应用所需的所有组件,适用于初学者快速上手或者为现有项目添加Hibernate支持。
Hibernate工具、XDoclet模板配置以及Hibernate的益友iBatis用法,还以卡片的形式列出了本书中所用的工具及软件,附录最后一部分是“快速启动代码”,供读者对比与参考,也给初学者提供了一个快带起步的基础。...
Hibernate工具、XDoclet模板配置以及Hibernate的益友iBatis用法,还以卡片的形式列出了本书中所用的工具及软件,附录最后一部分是“快速启动代码”,供读者对比与参考,也给初学者提供了一个快带起步的基础。...
第3章 快速起步 3.1 准备工作 3.2 Hibernate配置 3.3 日志配置 3.4 第一段代码 3.5 代码初解 第4章 Hibernate基础 4.1 Hibernate基础语义 4.2 基础配置 4.3 Hibernate O/R映射 4.4 数据关联 4.5 ...
5. **Spring Boot整合Hibernate**:Spring Boot通过`spring-boot-starter-data-jpa`起步依赖自动配置了Hibernate。只需在配置文件中指定数据库连接信息,Spring Boot就会自动创建SessionFactory,并在需要时提供...
Hibernate工具、XDoclet模板配置以及Hibernate的益友iBatis用法,还以卡片的形式列出了本书中所用的工具及软件,附录最后一部分是“快速启动代码”,供读者对比与参考,也给初学者提供了一个快带起步的基础。...
此外,虽然自动化的代码生成可以快速起步,但有时仍需根据业务需求进行手动调整。 7. **文档资源** 提供的“JPA to entities.doc”文档很可能是对这个过程的详细步骤或者相关知识点的进一步解释,建议查阅以获取更...
Spring Boot的核心理念是“约定优于配置”,它提供了一种快速构建独立的、生产级别的基于Spring的应用程序的方法。无需大量的XML配置,而是通过自动配置和起步依赖来简化项目结构。 1. **起步依赖**:Spring Boot...
本书有丰富的附录部,在附录中讲述了Hibernate常用的映射配置,Hibernate工具、XDoclet模板配置以及Hibernate的益友iBatis用法,还以卡片的形式列出了本书中所用的工具及软件,附录最后一部分是“快速启动代码”,供...
Hibernate工具、XDoclet模板配置以及Hibernate的益友iBatis用法,还以卡片的形式列出了本书中所用的工具及软件,附录最后一部分是“快速启动代码”,供读者对比与参考,也给初学者提供了一个快带起步的基础。...
SpringBoot是Spring框架的一个子项目,它简化了初始化和配置Spring应用的过程,使得开发者能够快速启动项目。SpringBoot的核心特性包括自动配置、内嵌Web服务器(如Tomcat)和起步依赖。通过起步依赖,开发者可以...
虽然自动生成的代码可以快速起步,但通常需要根据项目需求进行调整。比如,添加懒加载、缓存策略、事务管理等高级特性。此外,合理设计实体类的继承结构,利用集合类型处理一对多、多对一关系,也是提高代码可维护...
本书有丰富的附录部,在附录中讲述了Hibernate常用的映射配置,Hibernate工具、XDoclet模板配置以及Hibernate的益友iBatis用法,还以卡片的形式列出了本书中所用的工具及软件,附录最后一部分是“快速启动代码”,供...
创建一个新的 Maven 项目,并在 `pom.xml` 文件中添加 SpringBoot 的起步依赖,例如 `spring-boot-starter-web` 和 `spring-boot-starter-data-jpa`,后者包含了对 Hibernate 的支持。 接下来,我们需要定义实体类...