先配置Product.hbm.xml,最重要是在这个文件中
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="star.july.b_identity.Product" table="t_product">
<id name="id" column="id">
<!--
主键维护策略
1)开发者(程序)自行维护
assigned
2)交给数据库维护
identity:适合mysql数据库(自增长)
sequence:适合oracle数据库(序列增长)
native(推荐):选择适合的策略(自动选择identity或sequence)
3)hibernate维护
increment:(int)hibernate自增长(算法:查询表id的最大值,然后+1)
uuid:(string)生成一个32为字符串
-->
<generator class="native"></generator>
</id>
<!--
hibernate 常见的映射类型
type:数据类型
两种写法:
1)java写法(默认)
整数: java.lang.Integer
字符串: java.lang.String
小数:java.lang.Double/java.lang.Float
布尔:java.lang.Boolean
日期:java.util.Date
日期时间: java.uitl.Date
字符文件:java.lang.String
字节文件:java.lang.Byte[]
2)hibernate写法
整数: integer
字符串:string
小数:double/float
布尔: boolean
日期: date
日期时间:datetime
字符文件:string
字节文件:binary
-->
<property name="name" column="name" type="string"></property>
<property name="birth" column="birth" type="date"></property>
<property name="info" column="info" type="string" length="100000000"></property>
<property name="photo" column="photo" type="binary" length="100000000"></property>
</class>
</hibernate-mapping>
创建实体类
package star.july.b_identity;
import java.util.Date;
public class Product {
private int id;
// private String id
private String name;
private Date birth; //日期类型
private String info; //字符文件内容
private byte[] photo; //字节文件内容
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Date getBirth() {
return birth;
}
public void setBirth(Date birth) {
this.birth = birth;
}
public String getInfo() {
return info;
}
public void setInfo(String info) {
this.info = info;
}
public byte[] getPhoto() {
return photo;
}
public void setPhoto(byte[] photo) {
this.photo = photo;
}
}
测试:
package star.july.b_identity;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileReader;
import java.util.Date;
import org.hibernate.Hibernate;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.junit.Test;
import star.july.util.HibernateUtil;
public class Demo {
@Test
public void test1(){
Session session = HibernateUtil.getSession();
try{
Transaction ts = session.getTransaction();
ts.begin();
Product p = new Product();
p.setName("jack");
p.setBirth(new Date());
//读取字符文件
FileReader file = new FileReader("f:/testwork/student.xml");
BufferedReader br = new BufferedReader(file);
String info = "";
String content=null;
while((info = br.readLine())!=null){
content += info;
}
p.setInfo(content);
//读取字节文件
File f = new File("f:/testwork/shopsys/8745ab1e-c359-47b0-96c4-809258903789.jpg");
FileInputStream in = new FileInputStream(f);
byte[] b = new byte[(int)f.length()];
in.read(b);
p.setPhoto(b);
session.save(p);
ts.commit();
HibernateUtil.close(session);
}catch(Exception e){
e.printStackTrace();
}
}
}