Hibernate_05
A.数据类型转换和大对象处理
1.数据类型转换
Hibernate提供了UserType等接口,允许用户自定义数据类型
但是一般开发中不建议自定义类型
<property name="属性的名字" type="类型名"> <column name=“字段的名字” length=“长度 " /> </property>
2.类型转换图
3.变量关系表
Oracle
类型 Java mysql 长度 integer/int java.lang.Integer int INTEGER 4B long java.lang.Long long BIGINT 8B short java.lang.Short.short SMALLINT 2B byte java.lang.Byte byte TINYINT 1B float java.lang.Float float FOLAT 4B double java.lang.Double double DOUBLE 8B character java.lang.Characet/STring/char CHAR(1) 定长字串 string java.lang.String VARCHAR 变长字串 boolean java.lang.Boolean boolean BIT 布尔类型 date jva.util.Date/ jvaa.sql.Date DATE 日期 calendar java.util.Calendar TIMESTAMP 日期 calendar_date java.util.Calendar 日期 日期 binary byte[] BLOB BLOB text java.sql.String TEXT CLOB clob java.sq.Clob CLOB CLOB blob java.sql.Blob BLOB BLOB 数值型:number(n) number(p,s)
字符型:char(n) varchar2(n) long 允许有单位 char(10 char)默认byte
日期型:date timestamp
二进制型:raw long raw
大对象:4G CLOB BLOB Bfile
4.大对象处理
InputStream in = new FileInputStream("D:/a.jsp"); byte[] b = new byte[in.available()]; BlobTest blobTest = new BlobTest(); blobTest.setMyblob(b); session.save(blobTest); tx.commit();
B.QBC
1.概述
Query by Criteria是一种比HQL更加面向对象的查询方式
Hibernate提供了一组工具类用于生成对应的查询
Criteria本身只是一个查询容器
具体的查询条件需要通过Criteria.add方法添加到实例中
Hibernate3+中引入了Restrictions作为Expression的替代
两者的使用方法一致
eq对应sql的field=value
gt对应sql的field>value gtProperty则是属性之间比较
ge对应sql的field>=value 同上
lt对应sql的field<value 同上
le对应sql的field<=value 同上
其余方法代码中演示
2.准备工作
oracler数据库:scott
创建web工程,导入jar包
配置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 name=""> <property name="dialect">org.hibernate.dialect.Oracle9Dialect</property> <property name="connection.url">jdbc:oracle:thin:@localhost:1521:orcl</property> <property name="connection.username">scott</property> <property name="connection.password">123456</property> <property name="connection.driver_class">oracle.jdbc.OracleDriver</property> <property name="show_sql">true</property> <property name="format_sql">true</property> <mapping resource="org/wpf/entity/EmpBean.hbm.xml" /> </session-factory> </hibernate-configuration>
配置EmpBean.hbm.xml
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="org.wpf.entity.EmpBean" table="EMP"