Hibernate学习(1--8)
来源:互联网 发布:2016网络知识竞赛 编辑:程序博客网 时间:2024/05/19 22:01
Hibernate初学 基础配置详解
(2012-10-23 20:48:20)hibernate基础配置
开发步骤
分类: Hibernate解压后的目录结构:
2、持久化JAVA类必须遵循的原则
二、Hibernate开发步骤
切记:实体类中的属性名有二个以上(含两个)的小写字母开头!!!!
import java.util.Date;
public class UserInfor {
<!DOCTYPE hibernate-mapping PUBLIC
<hibernate-mapping package="com.entity">
</hibernate-mapping>
http://chen25362936.blog.163.com/blog/static/256554742010111311275267
1)name:持久化类的标识属性的名字
2)column:数据库表的主键这段的名字
1)name:持久化类的属性名,以小写字母开头
2)column:数据库表的字段名
3、编写Hibernate的配置文件hibernate.cfg.xml(这里的名字是固定的)
属性文件:hibernate.properties
调用代码:Configuration cfg=new Configuration();
XML文件:hibernate.cfg.xml
调用代码: Configuration cfg=new Configuration().configure();
关于 hibernate.cfg.xml的样例可以到上面解压的Project/etc/下查找,在该样例下修改即可!!!!该xml文件中要设置的属性名和值可以在Project/etc/hibernate.properties文件中查找到!!!
<hibernate-configuration>
</hibernate-configuration>
4、测试类中操作
public
}
Hibernate配置各种数据源详解
(2012-10-23 22:22:53)hibernate.cfg.xml
配置数据源
分类: Hibernate1. 配置数据源
在Hibernate.cfg.xml中既可以配置JDBC,也可以配置JNDI。在本小节中讲述数据源如何配置。
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“>
<hibernate-configuration>
<session-factory>
<!– 各属性的配置–>
<!—为true表示将Hibernate发送给数据库的sql显示出来 –>
<property name=”show_sql”>true</property>
<!– SQL方言,这边设定的是MySQL –>
<property name=”dialect”>net.sf.hibernate.dialect.MySQLDialect</property>
<!– 一次读的数据库记录数 –>
<property name=”jdbc.fetch_size”>50</property>
<!– 设定对数据库进行批量删除 –>
<property name=”jdbc.batch_size”>30</property>
<!—下面为JNDI的配置 –>
<!– 数据源的名称 –>
<property name=”connection.datasource”>java:comp/env/jdbc/datasourcename</property>
<!– Hibernate的连接加载类 –>
<property name=”connection.provider_class”>org.hibernate.connection.DatasourceConnectionProv
</property>
<property name=”dialect”>net.sf.hibernate.dialect.SQLServerDialect</property>
<!—映射文件 –>
<mapping resource=”com/amigo/pojo/User.hbm.xml”/>
<mapping resource=”com/amigo/pojo/Org.hbm.xml”/>
</session-factory>
</hibernate-configuration>
2. c3p0连接池
c3p0连接池是Hibernate推荐使用的连接池,若需要使用该连接池时,需要将c3p0的jar包加入到classpath中。c3p0连接池的配置示例如下:
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“>
<hibernate-configuration>
<session-factory>
<!– 显示实际操作数据库时的SQL –>
<property name=”show_sql”>true</property>
<!– SQL方言,这边设定的是MySQL –>
<property name=”dialect”>net.sf.hibernate.dialect.MySQLDialect</property>
<!–驱动程序,在后续的章节中将讲述mysql、sqlserver和Oracle数据库的配置 –>
<property name=”connection.driver_class”>……</property>
<!– JDBC URL –>
<property name=”connection.url”>……</property>
<!– 数据库用户名 –>
<property name=”connection.username”>user</property>
<!– 数据库密码 –>
<property name=”connection.password”>pass</property>
<property name=”c3p0.min_size”>5</property>
<property name=”c3p0.max_size”>20</property>
<property name=”c3p0.timeout”>1800</property>
<property name=”c3p0.max_statements”>50</property>
<!– 对象与数据库表格映像文件 –>
<mapping resource=”com/amigo/pojo/User.hbm.xml”/>
<mapping resource=”com/amigo/pojo/Org.hbm.xml”/>
</session-factory>
</hibernate-configuration>
在上述配置中,Hibernate根据配置文件生成连接,再交给c3p0管理。
3. proxool连接池
proxool跟c3p0以及dbcp不一样,它是自己生成连接的,因此连接信息放在proxool配置文件中。使用它时,需要将proxool-0.8.3.jar加入到classespath中。
(关于Hibernate中配置Proxool在proxool的百度百科有详细的介绍:http://baike.baidu.com/view/2098784.htm)
配置举例如下:
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“>
<hibernate-configuration>
<session-factory>
<!– 显示实际操作数据库时的SQL –>
<property name=”show_sql”>true</property>
<!– SQL方言,这边设定的是MySQL –>
<property name=”dialect”>net.sf.hibernate.dialect.MySQLDialect</property>
<!—proxool的配置 –>
<property name=”proxool.pool_alias”>pool1</property>
<property name=”proxool.xml”>ProxoolConf.xml</property>
<property name=”connection.provider_class”>net.sf.hibernate.connection.ProxoolConnectionProvide
<!– 对象与数据库表格映像文件 –>
<mapping resource=”com/amigo/pojo/User.hbm.xml”/>
<mapping resource=”com/amigo/pojo/Org.hbm.xml”/>
</session-factory>
</hibernate-configuration>
在hibernate.cfg.xml的同目录下编写proxool的配置文件:ProxoolConf.xml,该文件的配置实例如下:
ProxoolConf.xml
<?xml version=”1.0″ encoding=”utf-8″?>
<!– the proxool configuration can be embedded within your own application’s.
Anything outside the “proxool” tag is ignored. –>
<something-else-entirely>
<proxool>
<alias>pool1</alias>
<!–proxool只能管理由自己产生的连接–>
<!– 驱动的url–>
<!– jdbc:mysql://localhost:3306/dbname?useUnicode=true&characterEncoding=GBK–>
<driver-url>… </driver-url>
<!– 驱动类,eg. com.mysql.jdbc.Driver–>
<driver-class>… </driver-class>
<driver-properties>
<!– 数据库用户名,eg. value为root–>
<property name=”user” value=”…”/>
<!– 数据库密码,eg. value为root–>
<property name=”password” value=”….”/>
</driver-properties>
<!– proxool自动侦察各个连接状态的时间间隔(毫秒),侦察到空闲的连接就马上回收,超时的销毁–>
<house-keeping-sleep-time>90000</house-keeping-sleep-time>
<!– 指因未有空闲连接可以分配而在队列中等候的最大请求数,超过这个请求数的用户连接就不会被接受–>
<maximum-new-connections>20</maximum-new-connections>
<!– 最少保持的空闲连接数–>
<prototype-count>5</prototype-count>
<!– 允许最大连接数,超过了这个连接,再有请求时,就排在队列中等候,最大的等待请求数由maximum-new-connections决定–>
<maximum-connection-count>100</maximum-connection-count>
<!– 最小连接数–>
<minimum-connection-count>10</minimum-connection-count>
</proxool>
</something-else-entirely>
4. dbcp连接池
在hibernate3.0中,已经不再支持dbcp了,hibernate的作者在hibernate.org中,明确指出在实践中发现dbcp有 BUG,在某些种情会产生很多空连接不能释放,所以抛弃了对dbcp的支持。若需要使用dbcp,开发人员还需要将commons-pool- 1.2.jar 和commons-dbcp-1.2.1.jar两个jar包加入到classpath中。dbcp与c3p0一样,都是由hibernate建立连接 的。
在hibernate2.0中的配置建立如下:
hibernate.cfg.xml
<?xml version=”1.0″ encoding=”UTF-8″?>
<!DOCTYPE hibernate-configuration PUBLIC
“-//Hibernate/Hibernate Configuration DTD 2.0//EN”
“http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd“>
<hibernate-configuration>
<session-factory>
<!– 显示实际操作数据库时的SQL –>
<property name=”show_sql”>true</property>
<!– SQL方言,这边设定的是MySQL –>
<property name=”dialect”>net.sf.hibernate.dialect.MySQLDialect</property>
<!–驱动程序,在后续的章节中将讲述mysql、sqlserver和Oracle数据库的配置 –>
<property name=”connection.driver_class”>……</property>
<!– JDBC URL –>
<property name=”connection.url”>……</property>
<!– 数据库用户名,eg. root –>
<property name=”connection.username”>…</property>
<!– 数据库密码, eg. root–>
<property name=”connection.password”>…</property>
<property name=”dbcp.maxActive”>100</property>
<property name=”dbcp.whenExhaustedAction”>1</property>
<property name=”dbcp.maxWait”>60000</property>
<property name=”dbcp.maxIdle”>10</property>
<property name=”dbcp.ps.maxActive”>100</property>
<property name=”dbcp.ps.whenExhaustedAction”>1</property>
<property name=”dbcp.ps.maxWait”>60000</property>
<property name=”dbcp.ps.maxIdle”>10</property>
<!– 对象与数据库表格映像文件 –>
<mapping resource=”com/amigo/pojo/User.hbm.xml”/>
<mapping resource=”com/amigo/pojo/Org.hbm.xml”/>
</session-factory>
</hibernate-configuration>
5. MySql连接配置
在hibernate中,可以配置很多种数据库,例如MySql、Sql Server和Oracle,MySql的配置举例如下:
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“>
<hibernate-configuration>
<session-factory>
<!– 各属性的配置–>
<!—为true表示将Hibernate发送给数据库的sql显示出来 –>
<property name=”show_sql”>true</property>
<!– SQL方言,这边设定的是MySQL –>
<property name=”dialect”>net.sf.hibernate.dialect.MySQLDialect</property>
<!– 一次读的数据库记录数 –>
<property name=”jdbc.fetch_size”>50</property>
<!– 设定对数据库进行批量删除 –>
<property name=”jdbc.batch_size”>30</property>
<!–驱动程序–>
<property name=”connection.driver_class”>com.mysql.jdbc.Driver</property>
<!– JDBC URL –>
<property name=”connection.url”>jdbc:mysql://localhost/dbname?characterEncoding=gb2312</property>
<!– 数据库用户名–>
<property name=”connection.username”>root</property>
<!– 数据库密码–>
<property name=”connection.password”>root</property>
<!—映射文件 –>
<mapping resource=”com/amigo/pojo/User.hbm.xml”/>
<mapping resource=”com/amigo/pojo/Org.hbm.xml”/>
</session-factory>
</hibernate-configuration>
上面使用的驱动类是com.mysql.jdbc.Driver。需要将MySql的连接器jar包(eg. mysql-connector-java-5.0.4-bin.jar)加入到classpath中。
6. Sql Server连接配置
本小节讲述一下Sql Server数据库的hibernate连接设置,在此只给出连接部分的内容,其余部分与2.2.1.5一样,在此不再赘述。内容如下:
<!–驱动程序–>
<property name=”connection.driver_class”>net.sourceforge.jtds.jdbc.Driver</property>
<!– JDBC URL –>
<property name=”connection.url”>jdbc:jtds:sqlserver://localhost:1433;DatabaseName=dbname</property>
<!– 数据库用户名–>
<property name=”connection.username”>sa</property>
<!– 数据库密码–>
<property name=”connection.password”></property>
上例的驱动类使用的是jtds的驱动类,因此读者需要将jtds的jar包(eg. jtds-1.2.jar)加入到classpath中。
7. Oracle连接配置
来源:http://www.blogjava.net/amigoxie/archive/2007/12/29/171395.html
本小节讲述一下Sql Server数据库的hibernate连接设置,在此只给出连接部分的内容,其余部分与2.2.1.5一样,在此不再赘述。内容如下:
<!–驱动程序–>
<property name=”connection.driver_class”>oracle.jdbc.driver.OracleDriver</property>
<!– JDBC URL –>
<property name=”connection.url”>jdbc:oracle:thin:@localhost:1521:dbname</property>
<!– 数据库用户名–>
<property name=”connection.username”>test</property>
<!– 数据库密码–>
<property name=”connection.password”>test</property>
上例使用的驱动类为:oracle.jdbc.driver.OracleDriver,开发人员需要将相关的jar包(ojdbc14.jar)加入到classpath中。
二、hibernate配置属性
来源:http://blog.csdn.net/wxytx88/archive/2009/03/26/4027216.aspx
表 3.3.
属性名
hibernate.dialect
取值 full.classname.of.Dialect
hibernate.show_sql
eg. true | false
hibernate.format_sql
取值 true | false
hibernate.default_schema
取值 SCHEMA_NAME
hibernate.default_catalog
取值 CATALOG_NAME
hibernate.session_factory_name
取值 jndi/composite/name
hibernate.max_fetch_depth
取值 建议在0到3之间取值
hibernate.default_batch_fetch_size
取值 建议的取值为4, 8, 和16
hibernate.default_entity_mode
取值 dynamic-map, dom4j, pojo
hibernate.order_updates
取值 true | false
hibernate.generate_statistics
取值 true | false
hibernate.use_identifer_rollback
取值 true | false
hibernate.use_sql_comments
取值 true | false
表 3.4.
属性名
hibernate.jdbc.fetch_size
hibernate.jdbc.batch_size
取值 建议取5到30之间的值
hibernate.jdbc.batch_versioned_data
eg. true | false
hibernate.jdbc.factory_class
eg. classname.of.Batcher
hibernate.jdbc.use_scrollable_resultset
取值 true | false
hibernate.jdbc.use_streams_for_binary
取值 true | false
hibernate.jdbc.use_get_generated_keys
取值 true|false
hibernate.connection.provider_class
取值 classname.of.ConnectionProvider
hibernate.connection.isolation
取值 1, 2, 4, 8
hibernate.connection.autocommit
取值 true | false
hibernate.connection.release_mode
取值 auto (默认) | on_close | after_transaction | after_statement
注意,这些设置仅对通过SessionFactory.openSession得到的Session起作用。对于通过 SessionFactory.getCurrentSession得到的Session,所配置的CurrentSessionContext实现控制 这些Session的连接释放模式。请参阅第 2.5 节 “上下文相关的(Contextual)Session”。
hibernate.connection.<propertyName>
hibernate.jndi.<propertyName>
表 3.5.
属性名
hibernate.cache.provider_class
取值 classname.of.CacheProvider
hibernate.cache.use_minimal_puts
取值 true|false
hibernate.cache.use_query_cache
取值 true|false
hibernate.cache.use_second_level_cache
取值 true|false
hibernate.cache.query_cache_factory
取值 classname.of.QueryCache
hibernate.cache.region_prefix
取值 prefix
hibernate.cache.use_structured_entries
取值 true|false
表 3.6.
属性名
hibernate.transaction.factory_class
取值 classname.of.TransactionFactory
jta.UserTransaction
取值 jndi/composite/name
hibernate.transaction.manager_lookup_class
取值 classname.of.TransactionManagerLookup
hibernate.transaction.flush_before_completion
取值 true | false
hibernate.transaction.auto_close_session
取值 true | false
表 3.7.
属性名
hibernate.current_session_context_class
eg. jta | thread | managed | custom.Class
hibernate.query.factory_class
取值 org.hibernate.hql.ast.ASTQueryTranslatorFactor
hibernate.query.substitutions
取值 hqlLiteral=SQL_LITERAL, hqlFunction=SQLFUNC
hibernate.hbm2ddl.auto
取值 validate | update | create | create-drop
hibernate.cglib.use_reflection_optimizer
取值 true | false
3.4.1.
你应当总是为你的数据库将hibernate.dialect属性设置成正确的 org.hibernate.dialect.Dialect子类. 如果你指定一种方言, Hibernate将为上面列出的一些属性使用合理的默认值, 为你省去了手工指定它们的功夫.
表 3.8.
RDBMS 方言
DB2 org.hibernate.dialect.DB2Dialect
DB2 AS/400 org.hibernate.dialect.DB2400Dialect
DB2 OS390 org.hibernate.dialect.DB2390Dialect
PostgreSQL org.hibernate.dialect.PostgreSQLDialect
MySQL org.hibernate.dialect.MySQLDialect
MySQL with InnoDB org.hibernate.dialect.MySQLInnoDBDialect
MySQL with MyISAM org.hibernate.dialect.MySQLMyISAMDialect
Oracle (any version) org.hibernate.dialect.OracleDialect
Oracle 9i/10g org.hibernate.dialect.Oracle9Dialect
Sybase org.hibernate.dialect.SybaseDialect
Sybase Anywhere org.hibernate.dialect.SybaseAnywhereDialect
Microsoft SQL Server org.hibernate.dialect.SQLServerDialect
SAP DB org.hibernate.dialect.SAPDBDialect
Informix org.hibernate.dialect.InformixDialect
HypersonicSQL org.hibernate.dialect.HSQLDialect
Ingres org.hibernate.dialect.IngresDialect
Progress org.hibernate.dialect.ProgressDialect
Mckoi SQL org.hibernate.dialect.MckoiDialect
Interbase org.hibernate.dialect.InterbaseDialect
Pointbase org.hibernate.dialect.PointbaseDialect
FrontBase org.hibernate.dialect.FrontbaseDialect
Firebird org.hibernate.dialect.FirebirdDialect
三、PO.hbm.xml属性详解
1. <meta>元素的属性
属性
class-description
field-description
interface
implements
extends