这是Login类
package com.pb.hibernate.po;import java.sql.Blob;
import java.sql.Clob;public class Login {
private int id;
private String userName;
private String pazzWord;
private Blob image;
private Clob description; public Clob getDescription() {
return description;
} public void setDescription(Clob description) {
this.description = description;
} public Blob getImage() {
return image;
} public void setImage(Blob image) {
this.image = image;
} public int getId() {
return id;
} public void setId(int id) {
this.id = id;
} public String getUserName() {
return userName;
} public void setUserName(String userName) {
this.userName = userName;
} public String getPazzWord() {
return pazzWord;
} public void setPazzWord(String pazzWord) {
this.pazzWord = pazzWord;
}}

解决方案 »

  1.   

    这是Hibernate配置文件
    <!DOCTYPE hibernate-configuration PUBLIC
    "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
    <hibernate-configuration>
    <session-factory>
    <!-- 以下五项为连接数据库JDBC -->
    <!-- 指定方言 -->
    <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect </property>
    <!-- 驱动类的完整名称 -->
    <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
    <!-- url -->
    <property name="connection.url">jdbc:mysql://localhost:3306/ddd</property>
    <!-- 数据库名称 -->
    <property name="connection.username">root</property>
    <!-- 对应数据库密码 -->
    <property name="connection.password">19900909</property> <property name="show_sql">true</property>
    <!-- 指明映射文件的完整路径 -->
    <mapping resource="com/pb/hibernate/po/Login.hbm.xml" />
    </session-factory>
    </hibernate-configuration>
      

  2.   

    这是映射文件
    <?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>
    <!-- 制定哪个表与哪个持久化类之间有映射关系 schema为用户模式,填写的数据库用户名 -->
    <!-- 当使用load()方法时,lazy属性代表检索策略,true为延迟检索策略,false为立即检索策略,默认为true ,而get()方法则会忽略此属性,只使用立即检索策略 -->
    <!-- 延迟检索:当一个对象内包含另一个对象作为属性时,若不操作此内置对象则不会检索该内置对象 -->
    <!-- 立即检索:当一个对象内包含另一个对象作为属性时,会一次把所有的属性都检索出来,若不操作此内置对象则也会检索该内置对象 -->
    <class name="com.pb.hibernate.po.Login" table="login">
    <!-- 持久化类对主键的设置 -->
    <!-- name为持久化类得主键,type为该主键类型 -->
    <id name="id" type="java.lang.Integer">
    <!-- column对应数据库表的对应列列名 不区分大小写, length为长度,not-null为设置是否可以为空 -->
    <column name="id" length="5"></column>
    <!-- 说明该主键的增长方式,是自增还是由用户指定,是由数据库决定还是由框架决定 -->
    <!-- native代表数据库自增长,assigned代表用户指定 ,increment代表有容器产生 -->
    <generator class="increment" />
    </id>
    <!-- 设置非主键属性 -->
    <!-- 设置持久化类得属性 -->
    <property name="userName" type="java.lang.String">
    <!-- 设置持久化类对应的数据库表属性 -->
    <column name="userName" length="20" not-null="true" />
    </property>
    <property name="pazzWord" type="java.lang.String">
    <!-- 设置持久化类对应的数据库表属性 -->
    <column name="password" length="20" not-null="true" />
    </property>
    <!-- blob类型的设置 -->
    <!-- 第二种设置属性的方法,将column设置为property的一个属性 -->
    <property name="image" type="java.sql.Blob" column="image" />
    <property name="description" type="java.sql.Clob" column="description" /> <!--discriminator标签用于在表中创建一个标识列,其"column"属性指定标识列的列名,"type"指定了标识列的类型 <discriminator 
    type="string" /> --> </class>
    </hibernate-mapping>
      

  3.   

    这是test类
    package com.pb.hibernate.test;import java.io.IOException;
    import java.sql.SQLException;import com.pb.hibernate.dao.BlobLogin;
    import com.pb.hibernate.po.Login;public class Test { public static void main(String[] args) {
    Login login = new Login();
    // login.setId(2);
    login.setUserName("jerry");
    login.setPazzWord("1233");
    int id;
    try {
    id = new BlobLogin().saveBlob(login, "/123.jpg");
    System.out.println("id=" + id);
    new BlobLogin().getBlob(id, "e://123.jpg");
    } catch (IOException e) {
    e.printStackTrace();
    } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } }
    }