hibernate配置

合集下载

hibernate的基本用法

hibernate的基本用法

hibernate的基本用法Hibernate是一个开源的Java框架,用于简化数据库操作。

它为开发人员提供了一个更加简单、直观的方式来管理数据库,同时也提高了应用程序的性能和可维护性。

本文将逐步介绍Hibernate的基本用法,包括配置、实体映射、数据操作等。

一、配置Hibernate1. 下载和安装Hibernate:首先,我们需要下载Hibernate的压缩包并解压。

然后将解压后的文件夹添加到Java项目的构建路径中。

2. 创建Hibernate配置文件:在解压后的文件夹中,可以找到一个名为"hibernate.cfg.xml"的文件。

这是Hibernate的主要配置文件,我们需要在其中指定数据库连接信息和其他相关配置。

3. 配置数据库连接:在"hibernate.cfg.xml"文件中,我们可以添加一个名为"hibernate.connection.url"的属性,用于指定数据库的连接URL。

除此之外,还需要指定数据库的用户名和密码等信息。

4. 配置实体映射:Hibernate使用对象关系映射(ORM)来将Java类映射到数据库表。

我们需要在配置文件中使用"mapping"元素来指定实体类的映射文件。

这个映射文件描述了实体类与数据库表之间的对应关系。

二、实体映射1. 创建实体类:我们需要创建一个Java类,用于表示数据库中的一行数据。

这个类的字段通常与数据库表的列对应。

同时,我们可以使用Hibernate提供的注解或XML文件来配置实体的映射关系。

2. 创建映射文件:可以根据个人喜好选择使用注解还是XML文件来配置实体类的映射关系。

如果使用XML文件,需要创建一个与实体类同名的XML文件,并在其中定义实体类与数据库表之间的映射关系。

3. 配置实体映射:在配置文件中,我们需要使用"mapping"元素来指定实体类的映射文件。

Hibernate学习笔记

Hibernate学习笔记

Hibernate项目的构建与配置1.在项目里倒入Hibernate所必须的Jar包(1)Hibernate框架可以使用在任何的Java项目里,并不一定是Web项目。

只需要在项目里倒入Hibernate所必须要使用的jar包就可以了。

(2)在Hibernate的官网下载hibernate-release-4.2.2.Final.zip解压,要使用Hibernate必须导入的jar包就在目录“hibernate-release-4.2.2.Final\lib\required”下。

倒入此路径下的所有jar包就可以了。

2.配置hibernate.cfg.xml文件(1)配置hibernate.cfg.xml文件可以参考“\project\etc”目录下的hibernate.cfg.xml文件与hibernate.properties文件。

(2)使用Hibernate连接MySQL的hibernate.cfg.xml配置文件如下:<hibernate-configuration><session-factory>(设置显示Hibernate产生的SQL语句)<property name="show_sql">true</property>(设置MySQL的SQL语法的方言)<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>(设置MySQL的驱动程序)<property name="hibernate.connection.driver_class">org.gjt.mm.mysql.Driver</property>(设置MySQL的数据库路径、用户名、密码)<property name="hibernate.connection.url">jdbc:mysql:///java</property><property name="ername">root</property><property name="hibernate.connection.password">lizhiwei</property>(设置当数据库要保存的表不存在时,就新建表)<property name="hibernate.hbm2ddl.auto">update</property>(设置对象与数据库表的关系映射文件)<mapping resource="vo/User.hbm.xml"/></session-factory></hibernate-configuration>(3)此配置文件一般放在项目的src目录下。

spring4.x + hibernate4.x 配置详解

spring4.x + hibernate4.x 配置详解

spring4.x + hibernate4.x 配置详解关于spring和hibernate的使用以及特征等等,在此不再啰嗦,相信大家也都知道,或者去搜索一下即可。

本篇博文的内容主要是我最近整理的关于spring4.x 和hibernate 4.x 相关配置和使用方式,当然spring3.x以及hibernate4.x也可以借鉴。

首先是配置文件web.xml 增加以下代码即可<!-- 加载spring相关的配置文件--><context-param><param-name>contextConfigLocation</param-name><param-value>classpath*:/applicationContext.xml</param-value> </context-param><!-- 启用spring监听--><listener><listener-class>org.springframework.web.context.ContextLoaderListener</l istener-class></listener>然后建立 applicationContext.xml 文件,src下。

文件内容如下,注释我尽量写的很详细<beans xmlns:xsi="/2001/XMLSchema-instance"xmlns="/schema/beans"xmlns:aop="http://ww /schema/aop"xmlns:context="/schema/context"xmlns:tx="ht tp:///schema/tx"xmlns:cache="/schema/cache"xmlns:p="http:// /schema/p"xsi:schemaLocation="/schema/beans /schema/beans/spring-beans-4.0.xsd/schema/aop/schema/aop/spring-aop-4.0.xsd/schema/context/schema/context/spring-context-4.0.xsd/schema/tx/schema/tx/spring-tx-4.0.xsd/schema/cache http://www.springframewor /schema/cache/spring-cache-4.0.xsd"><!-- 引入properties文件--><context:property-placeholder location="classpath*:/appConfig.properties"/> <!-- 定义数据库连接池数据源bean destroy-method="close"的作用是当数据库连接不使用的时候,就把该连接重新放到数据池中,方便下次使用调用--> <bean id="dataSource"class="boPooledDataSourc e"destroy-method="close"><!-- 设置JDBC驱动名称--><property name="driverClass"value="${jdbc.driver}"/><!-- 设置JDBC连接URL --><property name="jdbcUrl"value="${jdbc.url}"/><!-- 设置数据库用户名--><property name="user"value="${ername}"/><!-- 设置数据库密码--><property name="password"value="${jdbc.password}"/><!-- 设置连接池初始值--><property name="initialPoolSize"value="5"/></bean><!-- 配置sessionFactory --><bean id="sessionFactory"class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"><!-- 数据源--><property name="dataSource"ref="dataSource"/><!-- hibernate的相关属性配置--><property name="hibernateProperties"><value><!-- 设置数据库方言-->hibernate.dialect=org.hibernate.dialect.MySQLDialect<!-- 设置自动创建|更新|验证数据库表结构-->hibernate.hbm2ddl.auto=update<!-- 是否在控制台显示sql -->hibernate.show_sql=true<!-- 是否格式化sql,优化显示-->hibernate.format_sql=true<!-- 是否开启二级缓存-->e_second_level_cache=false<!-- 是否开启查询缓存-->e_query_cache=false<!-- 数据库批量查询最大数-->hibernate.jdbc.fetch_size=50<!-- 数据库批量更新、添加、删除操作最大数-->hibernate.jdbc.batch_size=50<!-- 是否自动提交事务-->hibernate.connection.autocommit=true<!-- 指定hibernate在何时释放JDBC连接-->hibernate.connection.release_mode=auto<!-- 创建session方式hibernate4.x 的方式-->hibernate.current_session_context_class=org.springframework.or m.hibernate4.SpringSessionContext<!-- javax.persistence.validation.mode默认情况下是auto的,就是说如果不设置的话它是会自动去你的classpath下面找一个bean-validation**包所以把它设置为none即可-->javax.persistence.validation.mode=none</value></property><!-- 自动扫描实体对象tdxy.bean的包结构中存放实体类--><property name="packagesToScan"value="tdxy.bean"/> </bean><!-- 定义事务管理--><bean id="transactionManager"class="org.springframework.orm.hibernate4.HibernateTransactionManager "><property name="sessionFactory"ref="sessionFactory"/> </bean><!-- 定义Autowired 自动注入bean --><bean class="org.springframework.beans.factory.annotation.AutowiredAnnotati onBeanPostProcessor"/><!-- 扫描有注解的文件base-package 包路径--><context:component-scan base-package="tdxy"/><tx:advice id="txAdvice"transaction-manager="transactionManager"> <tx:attributes><!-- 事务执行方式REQUIRED:指定当前方法必需在事务环境中运行,如果当前有事务环境就加入当前正在执行的事务环境,如果当前没有事务,就新建一个事务。

hibernate配置

hibernate配置
属性可以是update、create和drop-create三个值。
目录
1 Hibernate概述 2 第一个Hibernate程序 3 Hibernate的配置文件 4 深入理解持久化对象 5 Hibernate的映射文件 6持久化对象 如果PO 实例与Session实例关联起来,且该实例关联到数据库的记录
脱管对象 如果PO实例曾经与Session实例关联过,但是因为Session的关闭等原 因,PO实例脱离了Session 的管理
Hibernate全面解决方案架构解释
事务(Transaction) 代表一次原子操作,它具有数据库事务的概念 但它通过抽象,将应用程序从底层的具体的JDBC、JTA和CORBA 事务中隔离开。 一个Session 之内可能包含多个Transaction对象。 所有的持久化操作都应该在事务管理下进行,即使是只读操作。
管态,对该对象操作无须锁定数据库,不会造成性能的下降。
持久化对象的状态迁移
持久化实体: 1、Serializable save(object obj) 将对象变为持久化状态 2、void persist(object obj) 将对象转化为持久化状态 3、Serializable save(object obj,object pk) 将obj对象转化为持久化状态,该对象保存到数据库,指定主键值 4、void persist(object obj,object pk) 也加了一个设定主键
Hibernate工作原理
Configuration cfg = new Configuration().configure();
开始
启动hibernate
构建Configuration 实例,初始 化该实例中的所有变量

jersey+spring+hibernate配置

jersey+spring+hibernate配置

3.3. 创建 Hibernate 配置文件 hibernate.cfg.xml
如果在src/resource目录下面建立,需要把resource目录作为源代码路径,目的 是使applicationContext.xml可以输出到WebRoot\WEB-INF\CLASSES目录下面;
第 6 页 共 11 页
Hibernate.cfg.xml配置文件的内容如下:
<?xml version='1.0' encoding='UTF-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "/hibernate-configuration3.0.dtd"> <hibernate-configuration> <session-factory> <property name="connection.url">jdbc:mysql://localhost:3306/test</property> <property name="ername">root</property> <property name="connection.password">123123</property> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> <!-- 数据库方言 --> <property name="dialect">org.hibernate.dialect.MySQLDialect</property> <!-- 显示SQL语句 --> <property name="show_sql">true</property> <!-- 根据需要自动创建数据表 --> <property name="hbm2ddl.auto">update</property> <!-- 指定连接池最小、最大连接数 --> <property name="hibernate.c3p0.min_size">1</property> <property name="hibernate.c3p0.max_size">20</property> <!-- 指定连接池连接的超时时长 --> <property name="hibernate.c3p0.timeout">5000</property> <!-- 指定连接池最大缓存多少个statement对象 --> <property name="hibernate.c3p0.max_statements">100</property> <property name="hibernate.c3p0.idle_test_period">3000</property> <property name="hibernate.c3p0.acquire_increment">2</property> <property name="hibernate.c3p0.validate">true</property> <!-- 对象与数据库表格映像文件 --> <mapping resource="com/pakko/bus/domain/User.cfg.xml" /> </session-factory> </hibernate-configuration>

三大框架

三大框架

Hibernate1.Hibernate 的初始化.读取Hibernate 的配置信息-〉创建Session Factory1)创建Configeration类的实例。

它的构造方法:将配置信息(Hibernate config.xml)读入到内存。

一个Configeration 实例代表Hibernate 所有Java类到Sql数据库映射的集合。

2)创建SessionFactory实例把Configeration 对象中的所有配置信息拷贝到SessionFactory的缓存中。

SessionFactory的实例代表一个数据库存储员源,创建后不再与Configeration 对象关联。

缓存(cache):指Java对象的属性(通常是一些集合类型的属性--占用内存空间。

SessionFactory的缓存中:Hibernate 配置信息。

OR映射元数据。

缓存-大:重量级对象小:轻量级对象3)调用SessionFactory创建Session的方法1】用户自行提供JDBC连接。

Connection con=dataSource.getConnection(); Session s=sessionFactory.openSession(con);2】让SessionFactory提供连接Session s=sessionFactory.openSession();4)通过Session 接口提供的各种方法来操纵数据库访问。

Hibernate 的缓存体系一级缓存:Session 有一个内置的缓存,其中存放了被当前工作单元加载的对象。

每个Session 都有自己独立的缓存,且只能被当前工作单元访问。

二级缓存:SessionFactory的外置的可插拔的缓存插件。

其中的数据可被多个Session共享访问。

SessionFactory的内置缓存:存放了映射元数据,预定义的Sql语句。

Hibernate 中Java对象的状态1.临时状态(transient)特征:1】不处于Session 缓存中2】数据库中没有对象记录Java如何进入临时状态1】通过new语句刚创建一个对象时2】当调用Session 的delete()方法,从Session 缓存中删除一个对象时。

hibernate配置文件说明

hibernate配置文件说明

create:每次加载hibernate时都会删除上一次的生成的表,然后根据你的model类再重新来生成新表,哪怕两次没有任何改变也要这样执行。会导致数据库表数据丢失。
create-drop: 每次加载hibernate时根据model类生成表,但是sessionFactory一关闭,表就自动删除。
(2)hibernate.show_sql打印所有的SQL语句到控制台,可以通过设置org.hibernate.SQL类的日志策略到DEBUG级,实现同样的效果。取值 true|false。
(3)hibernate.format_sql 格式化SQL语句在打印到控制台或写入日志文件时。取值true|false。
hibernate.cache.provider_class=org.hibernate.cache.SingletonEhCacheProvider
hibernate.cache.provider_class=org.hibernate.cache.EhCacheProvider
# 二级缓存配置文件
#Batch Size越大,批量操作的向数据库发送sql的次数越少,速度就越快。
hibernate.jdbc.batch_size=50
#设置外连接抓取树的最大深度取值. 建议设置为0到3之间
#hibernate.max_fetch_depth
#是否显示最终执行的SQL(开发环境)
hibernate.show_sql=false
# 格式化显示的SQL
hibernate.format_sql=false
# 如果设置为true,Hiberante将为SQL产生注释,这样更利于调试。默认值为false。取值为true|false。

Hibernate_映射配置文件详解

Hibernate_映射配置文件详解
–hibernate.properties –hibernate.cfg.xml
Prepared by TongGang
hibernate.cfg.xml的常用属性
• • • • • • • • • connection.url:数据库URL ername:数据库用户名 connection.password:数据库用户密码 connection.driver_class:数据库JDBC驱动 show_sql:是否将运行期生成的SQL输出到日志以供调试。取 show_sql 值 true | false dialect:配置数据库的方言,根据底层的数据库不同产生不 dialect 同的sql语句,Hibernate 会针对数据库的特性在访问时进行 优化。 hbm2ddl.auto:在启动和停止时自动地创建,更新或删除数据 hbm2ddl.auto 库模式。取值 create | update | create-drop resource:映射文件配置,配置文件名必须包含其相 mapping resource 对于根的全路径 connection.datasource :JNDI数据源的名称
• Class:定义一个持久化类 Class: • name (可选): 持久化类(或者接 (可选): 持久化类( 可选 口)的类名 • table (可选 - 默认是类的非全限 (可选 定名): 定名): 对应的数据库表名 • discriminator-value (可选 - 默 discriminator(可选 认和类名一样): 认和类名一样): 一个用于区分不 同的子类的值,在多态行为时使用。 同的子类的值,在多态行为时使用。 它可以接受的值包括 null 和 not null。 null。
Prepared by TongGang
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一个TransactionManagerLookup的类名-当使用JVM级缓存,或在JTA环境中使用hilo生成器的时候需要该类.
取值classname.of.TransactionManagerLookup
hibernate.transaction.flush_before_completion
如果开启, session在事务完成后将被自动清洗(flush)。现在更好的方法是使用自动session上下文管理。请参见第2.5节“上下文相关的(Contextual)Session”。
取值true|false
3.4.1. SQL方言
你应当总是为你的数据库将hibernate.dialect属性设置成正确的org.hibernate.dialect.Dialect子类.如果你指定一种方言, Hibernate将为上面列出的一些属性使用合理的默认值,为你省去了手工指定它们的功夫.
取值prefix
e_structured_entries
强制Hibernate以更人性化的格式将数据存入二级缓存.
取值true|false
表3.6. Hibernate事务属性
属性名
用途
hibernate.transaction.factory_class
一个TransactionFactory的类名,用于HibernateTransactionAPI (默认为JDBCTransactionFactory).
为由这个SessionFactory打开的所有Session指定默认的实体表现模式.
取值dynamic-map,dom4j,pojo
hibernate.order_updates
强制Hibernate按照被更新数据的主键,为SQL更新排序。这么做将减少在高并发系统中事务的死锁。
取值true|false
取值true|false
hibernate.transaction.auto_close_session
如果开启, session在事务完成后将被自动关闭。现在更好的方法是使用自动session上下文管理。请参见第2.5节“上下文相关的(Contextual)Session”。
取值true|false
在数据插入数据库之后,允许使用JDBC3PreparedStatement.getGeneratedKeys()来获取数据库生成的key(键)。需要JDBC3+驱动和JRE1.4+,如果你的数据库驱动在使用Hibernate的标识生成器时遇到问题,请将此值设为false.默认情况下将使用连接的元数据来判定驱动的能力.
取值classname.of.TransactionFactory
erTransaction
一个JNDI名字,被JTATransactionFactory用来从应用服务器获取JTAUserTransaction.
取值jndi/composite/name
hibernate.transaction.manager_lookup_class
hibernate.generate_statistics
如果开启, Hibernate将收集有助于性能调节的统计数据.
取值true|false
e_identifer_rollback
如果开启,在对象被删除时生成的标识属性将被重设为默认值.
取值true|false
e_sql_comments
取值validate|update|create|create-drop
e_reflection_optimizer
开启CGLIB来替代运行时反射机制(系统级属性).反射机制有时在除错时比较有用.注意即使关闭这个优化, Hibernate还是需要CGLIB.你不能在hibernate.cfg.xml中设置此属性.
设置JDBC事务隔离级别.查看java.sql.Connection来了解各个值的具体意义,但请注意多数数据库都不支持所有的隔离级别.
取值1, 2, 4, 8
hibernate.connection.autocommit
允许被缓存的JDBC连接开启自动提交(autocommit) (不建议).
取值true|false
hibernate.jdbc.batch_size
非零值,允许Hibernate使用JDBC2的批量更新.
取值建议取5到30之间的值
hibernate.jdbc.batch_versioned_data
如果你想让你的JDBC驱动从executeBatch()返回正确的行计数,那么将此属性设为true(开启这个选项通常是安全的).同时,Hibernate将为自动版本化的数据使用批量DML.默认值为false.
如果开启, Hibernate将在SQL中生成有助于调试的注释信息,默认值为false.
取值true|false
表3.4. Hibernate JDBC和连接(connection)属性
属性名
用途
hibernate.jdbc.fetch_size
非零值,指定JDBC抓取数量的大小(调用Statement.setFetchSize()).
取值auto(默认) |on_close|after_transaction|after_statement
注意,这些设置仅对通过SessionFactory.openSession得到的Session起作用。对于通过SessionFactory.getCurrentSession得到的Session,所配置的SessionContext实现控制这些Session的连接释放模式。请参阅第2.5节“上下文相关的(Contextual)Session”。
eg.true|false
hibernate.format_sql
在log和console中打印出更漂亮的SQL。
取值true|false
hibernate.default_schema
在生成的SQL中,将给定的schema/tablespace附加于非全限定名的表名上.
取值SCHEMA_NAME
hibernate.default_catalog
hibernate.connection.release_mode
指定Hibernate在何时释放JDBC连接.默认情况下,直到Session被显式关闭或被断开连接时,才会释放JDBC连接.对于应用程序服务器的JTA数据源,你应当使用after_statement,这样在每次JDBC调用后,都会主动的释放连接.对于非JTA的连接,使用after_transaction在每个事务结束时释放连接是合理的.auto将为JTA和CMT事务策略选择after_statement,为JDBC事务策略选择after_transaction.
表3.7.其他属性
属性名
用途
hibernate.current_session_context_class
为"当前"Session指定一个(自定义的)策略。关于内置策略的详情,请参见第2.5节“上下文相关的(Contextual)Session”。
eg.jta|thread|managed|custom.Class
hibernate.query.factory_class
选择HQL解析器的实现.
取值org.hibernate.hql.ast.ASTQueryTranslatorFactoryororg.hibernate.hql.classic.ClassicQueryTranslatorFactory
hibernate.query.substitutions
为单向关联(一对一,多对一)的外连接抓取(outer join fetch)树设置最大深度.值为0意味着将关闭默认的外连接抓取.
取值建议在0到3之间取值
hibernate.default_batch_fetch_size
为Hibernate关联的批量抓取设置默认数量.
取值建议的取值为4,8,和16
hibernate.default_entity_mode
eg.true|false
hibernate.jdbc.factory_class
选择一个自定义的Batcher.多数应用程序不需要这个配置属性.
eg.classname.of.Batcher
e_scrollable_resultset
允许Hibernate使用JDBC2的可滚动结果集.只有在使用用户提供的JDBC连接时,这个选项才是必要的,否则Hibernate会使用连接的元数据.
将Hibernate查询中的符号映射到SQL查询中的符号(符号可能是函数名或常量名字).
取值hqlLiteral=SQL_LITERAL, hqlFunction=SQLFUNC
hibernate.hbm2ddl.auto
在SessionFactory创建时,自动检查数据库结构,或者将数据库schema的DDL导出到数据库.使用create-drop时,在显式关闭SessionFactory时,将drop掉数据库schema.
表3.5. Hibernate缓存属性
属性名
用途
hibernate.cache.provider_class
自定义的CacheProvider的类名.
取值classname.of.CacheProvider
e_minimal_puts
以频繁的读操作为代价,优化二级缓存来最小化写操作.在Hibernate3中,这个设置对的集群缓存非常有用,对集群缓存的实现而言,默认是开启的.
hibernate.connection.<propertyName>
将JDBC属性propertyName传递到DriverManager.getConnection()中去.
hibernate.jndi.<propertyName>
相关文档
最新文档