体验Hibernate
来源:互联网 发布:aframe.js obj 编辑:程序博客网 时间:2024/05/21 13:22
Hibernate配置
- 步骤
- Hibernate配置
- 创建持久化类
- 创建数据库表
- 创建Hibernate映射文件
- 使用HibernateAPI对数据库进行操作
<!DOCTYPEhibernate-configurationPUBLIC
"-//Hibernate/Hibernate Configuration DTD3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<propertyname="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<propertyname="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<propertyname="hibernate.connection.url">jdbc:mysql:///hibernate</property>
<propertyname="hibernate.connection.username">root</property>
<propertyname="hibernate.connection.password">123456</property>
<propertyname="hbm2ddl.auto">update</property>
<propertyname="show_sql">true</property>
<propertyname="hibernate.c3p0.min_size">5</property>
<propertyname="hibernate.c3p0.max_size">20</property>
<propertyname="hibernate.c3p0.timeout">1800</property>
<propertyname="hibernate.c3p0.max_statements">50</property>
<mappingresource="cn/itcast/user/domain/Customer.hbm.xml"/>
<mappingresource="cn/itcast/user/domain/Order.hbm.xml"/>
<mappingresource="cn/itcast/user/domain/Category.hbm.xml"/>
</session-factory>
</hibernate-configuration>
日志配置
在使用Hibernate开发应用程序时, 应当总是为org.hibernate.SQL开启debug级别的日志记录,或者开启hibernate.show_sql属性。
指定只输出较为严重的错误信息以及Hibemate生成的SQL语句:
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=info,stdout
log4j.logger.net.sf.hibernate=error
log4j.logger.org.hibernate.tool.hbm2ddl=debug
- Hibernate日志类别
类别
功能
org.hibernate.SQL
在所有SQL DML语句被执行时为它们记录日志
org.hibernate.type
为所有JDBC参数记录日志
org.hibernate.tool.hbm2ddl
在所有SQL DDL语句执行时为它们记录日志
org.hibernate.pretty
在session清洗(flush)时,为所有与其关联的实体(最多20个)的状态记录日志
org.hibernate.cache
为所有二级缓存的活动记录日志
org.hibernate.transaction
为事务相关的活动记录日志
org.hibernate.jdbc
为所有JDBC资源的获取记录日志
org.hibernate.hql.AST
在解析查询的时候,记录HQL和SQL的AST分析日志
org.hibernate.secure
为JAAS认证请求做日志
org.hibernate
为任何Hibernate相关信息做日志 (信息量较大, 但对查错非常有帮助)
创建持久化类
publicclass Customer {
private Long id; // ID
private String name; // 姓名
private String email; // Email
private String password; // 密码
privateintphone; // 电话
privatebooleanmarrried; // 是否已婚
private String address; // 地址
privatechargender; // 性别
private String description; // 描述
privatebyte[]image; // 头像
private Date birthday; // 生日
private TimestampregisterTime; // 注册时间
// 省略各Field的getter、setter方法
}
创建数据库表
CREATETABLE CUSTOMERS(
ID BIGINTNOTNULLPRIMARYKEY,
NAMEVARCHAR(15)NOTNULL,
EMAIL VARCHAR(128)NOTNULL,
PASSWORDVARCHAR(8)NOTNULL,
PHONE INT,
ADDRESS VARCHAR(255),
GENDER CHAR(1),
IS_MARRIED BIT,
DESCRIPTION TEXT,
IMAGE BLOB,
BIRTHDAY DATE,
REGISTERED_TIME TIMESTAMP
);
Hibernate映射文件
Customer.hbm.xml
<!DOCTYPEhibernate-mappingPUBLIC
"-//Hibernate/HibernateMapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mappingpackage="cn.itcast.netstore.domain">
<classname="Customer"table="CUSTOMERS">
<idname="id"column="ID"type="long">
<generatorclass="increment"/>
</id>
<propertyname="name"column="NAME"type="string"not-null="true"/>
<propertyname="email"column="EMAIL"type="string"not-null="true"/>
<propertyname="password"column="PASSWORD"type="string"not-null="true"/>
<propertyname="phone"column="PHONE"type="integer"/>
<propertyname="address"column="ADDRESS"type="string"/>
<propertyname="gender"column="GENDER"type="character"/>
<propertyname="married"column="IS_MARRIED"type="boolean"/>
<propertyname="description"column="DESCRIPTION"type="text"/>
<propertyname="image"column="IMAGE"type="binary"/>
<propertyname="birthday"column="BIRTHDAY"type="date"/>
<propertyname="registerTime"column="REGISTERED_TIME"type="timestamp"/>
</class>
</hibernate-mapping>
使用HibernateAPI操作
- Hibernate工具类:
publicfinalclass HibernateUtil {
privatestaticfinal SessionFactorySESSION_FACTORY =buildSessionFactory();
privatestatic SessionFactory buildSessionFactory() {
try {
// 创建Configuration类的对象,并使用configure()方法加载资源
// 默认在classpath路径下加载名为hibernate.cfg.xml文件
// 如需自已指定配置文件,提供了configure()方法的一些重载方法
Configuration configuration = newConfiguration().configure();
// 通过Configuration类的对象构建Session工厂实例对象
SessionFactory factory =configuration.buildSessionFactory();
return factory;
} catch (Exception ex) {
System.err.println("Initial SessionFactory creation failed."+ex);
thrownew ExceptionInInitializerError(ex);
}
}
publicstatic SessionFactory getSessionFactory() {
returnSESSION_FACTORY;
}
}
- 模板代码:
publicclass CustomerDao {
publicvoid add(Customer customer) throws Exception{
Session session = HibernateUtil.getSessionFactory().openSession();
Transaction t = session.getTransaction();
try {
t.begin();
. . .
t.commit();
} catch (Exception e) {
if(t!=null)
t.rollback();
throw e;
} finally {
session.close();
}
}
}
- 体验Hibernate
- 体验hibernate
- Hibernate --Hibernate的入门体验
- 10分钟Hibernate体验
- Webwork2+Spring+Hibernate体验
- 10分钟Hibernate体验
- Hibernate的初体验
- 初步体验Hibernate
- Hibernate整体体验
- Hibernate的初步体验。
- hibernate初体验
- Hibernate初体验
- Hibernate入门体验
- Hibernate Search 初体验
- Hibernate初体验
- Hibernate之初体验
- hibernate初体验
- Hibernate之体验
- java---删除文件的问题小细节
- Delphi 打印 Tprinter(1)
- 转自fly1988happy 倒排索引
- Randomized Algorithm 随机算法 和 随机快速排序例子
- hibernate缓存技术详解
- 体验Hibernate
- oracle-sqlplusw 使用技巧
- 编辑删除SM12锁记录
- Golang多线程文件传输
- 有道单词本修改背景颜色
- Big.LITTLE+Mali结合——低功耗的趋势
- asp.net 新闻发布多附件上传
- JNI 生成C++接口方法.
- Java开发环境的配置