这次采用的是EJB3的配置
测试环境与前次一样:Hibernate3.6.7,Oracle 10g Express,JDK7,Win7
1,数据库脚本
create table TUser ( ID char(32) not null, name varchar(10char) not null, photo blob, --头像 constraint PK_TUser primary key (ID) );
2,配置文件,即META-INF/persistence.xml
<?xml version="1.0" encoding="UTF-8"?> <persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd" version="2.0"> <persistence-unit name="test" transaction-type="RESOURCE_LOCAL"> <provider>org.hibernate.ejb.HibernatePersistence</provider> <properties> <property name="javax.persistence.jdbc.driver" value="oracle.jdbc.driver.OracleDriver" /> <property name="javax.persistence.jdbc.url" value="jdbc:oracle:thin:@localhost:1521:XE" /> <property name="javax.persistence.jdbc.user" value="tanlan" /> <property name="javax.persistence.jdbc.password" value="tanlan" /> <property name="hibernate.show_sql" value="true" /> <property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect" /> </properties> </persistence-unit> </persistence>
3,编写实体类User.java
package com.tanlan.hibernate.entity; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.Lob; import javax.persistence.Table; import org.hibernate.annotations.GenericGenerator; @Entity @Table(name = "TUser") public class User { @Id @GenericGenerator(name = "uid", strategy = "uuid") @GeneratedValue(generator = "uid") private String id; @Column private String name; @Lob @Column private byte[] photo; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public byte[] getPhoto() { return photo; } public void setPhoto(byte[] photo) { this.photo = photo; } }
4.测试代码
package com.tanlan.hibernate.test; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.EntityTransaction; import javax.persistence.Persistence; import com.tanlan.hibernate.entity.User; public class TestUser { public static void main(String[] args) { addUser(); //getUserById(); } private static void addUser() { User user = new User(); user.setName("谭岚"); File photo = new File("D:\\test.jpg"); try { FileInputStream is = new FileInputStream(photo); ByteArrayOutputStream os = new ByteArrayOutputStream(); byte[] temp = new byte[512]; int i = 0; while ((i = is.read(temp, 0, temp.length)) != -1) { os.write(temp, 0, temp.length); } os.close(); is.close(); user.setPhoto(os.toByteArray()); } catch (Exception e) { e.printStackTrace(); } EntityManager em = createEntityManager(); EntityTransaction transaction = em.getTransaction(); transaction.begin(); em.persist(user); transaction.commit(); } private static void getUserById() { EntityManager em = createEntityManager(); User user = (User) em.find(User.class,"402881e432aad3340132aad33c210000"); em.close(); byte[] photo = user.getPhoto(); try { FileOutputStream os = new FileOutputStream("E:\\333.jpg"); os.write(photo); os.close(); } catch (Exception e) { e.printStackTrace(); } } private static EntityManager createEntityManager() { EntityManagerFactory emf = Persistence.createEntityManagerFactory("test"); return emf.createEntityManager(); } }