扩展阅读
  • java命名空间java.sql类types的类成员方法: java_object定义及介绍
  • 我想学JAVA ,是买THINK IN JAVA 还是JAVA2核心技术:卷1 好???
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: imageflavor定义及介绍
  • 请问Java高手,Java的优势在那里??,Java主要适合于开发哪类应用程序
  • java命名空间java.lang.management类managementfactory的类成员方法: getcompilationmxbean定义及介绍
  • 如何将java.util.Date转化为java.sql.Date?数据库中Date类型对应于java的哪个Date呢
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getlibrarypath定义及介绍
  • 谁有电子版的《Java编程思想第二版(Thinking in java second)》和《Java2编程详解(special edition java2)》?得到给分
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getstarttime定义及介绍
  • 本人想学java,请问java程序员的待遇如何,和java主要有几个比较强的方向
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: stringflavor定义及介绍
  • 我对JAVA一窍不通,可惜别人却给我一个Java的project,要我做一个安装程序,请问哪里有JAVA INSTALLER下载,而且我要不要安装java的sdk才能完成此项任务?
  • java命名空间java.security类keystore的类成员方法: getdefaulttype定义及介绍
  • 新年第一天,让我们讨论一下未来一年JAVA的发展趋势! 个人认为,JAVA将主要朝ERP和JAVA手机方面发展!
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getclasspath定义及介绍
  • 我想学Java,但不知道Java的实用的开发工具有那些,Java主要用在哪些方面,EJB到底是什么东西??
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: javaserializedobjectmimetype定义及介绍
  • redhat7.3下,java程序打印中文直接用java命令执行正常,用crontab执行java命令为乱码
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: javafilelistflavor定义及介绍
  • 各位学java的朋友,学java的未来是什么,你们学java都用来开发什么项目啊!来者给分!!
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getvmname定义及介绍
  • 请问java程序中的import为什么有的用java.….*,而有的又用java.….…,有什么区别吗?
  •  
    当前位置:  编程语言>java/jsp

    java将类序列化并存储到mysql(使用hibernate)

     
    分享到:
        发布时间:2014-1-14  


        本文导语:  Java 串行化技术可以使你将一个对象的状态写入一个Byte 流里,并且可以从其它地方把该Byte 流里的数据读出来,重新构造一个相同的对象。这种机制允许你将对象通过网络进行传播,并可以随时把对象持久化到数据库...

       Java 串行化技术可以使你将一个对象状态写入一个Byte 流里,并且可以从其它地方把该Byte 流里的数据读出来,重新构造一个相同的对象。这种机制允许你将对象通过网络进行传播,并可以随时把对象持久化数据库文件系统里。Java的串行化机制是RMIEJB等技术的技术基础。用途:利用对象的串行化实现保存应用程序的当前工作状态,下次再启动的时候将自动地恢复到上次执行的状态。序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。序列化是为了解决在对对象流进行读写操作时所引发的问题。

       序列化的实现:将需要被序列化的实现Serializable接口,然后使用一个输出流(如:FileOutputStream)来构造一个ObjectOutputStream(对象流)对象,接着,使用ObjectOutputStream对象的writeObject(Object obj)方法就可以将参数为obj的对象写出(即保存其状态),要恢复的话则用输入流

      使用hibernate跟数据库打交道  

      hibernate配置文件如下

    com.mysql.jdbc.Driverjdbc:mysql://localhost:3306/testtrueutf-8rootyou_passwordorg.hibernate.connection.C3P0ConnectionProvider20118001005002trueselect 1 1800025000trueorg.hibernate.dialect.MySQLInnoDBDialectupdatetruetrue

      hibernate实体类



    package test.java;
    import java.sql.Blob;
    public class Test {
        private int id;
        private Blob content;
                                               
        public Blob getContent() {
            return content;
        }
        public void setContent(Blob content) {
            this.content = content;
        }
        public int getId() {
            return id;
        }
        public void setId(int id) {
            this.id = id;
        }
                                               
    }

    待序列化的类



    package test.java;
    import java.io.Serializable;
    public class User implements Serializable{
        private int id;
        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 int getAge() {
            return age;
        }
        public void setAge(int age) {
            this.age = age;
        }
        private String name;
        private int age;
    }

    测试类


    package test.java;
    import java.io.ByteArrayInputStream;
    import java.io.ByteArrayOutputStream;
    import java.io.IOException;
    import java.io.ObjectInputStream;
    import java.io.ObjectOutputStream;
    import java.sql.Blob;
    import java.sql.SQLException;
    import org.hibernate.Hibernate;
    import org.hibernate.Session;
    import org.hibernate.SessionFactory;
    import org.hibernate.Transaction;
    import org.hibernate.cfg.Configuration;
    public class MySerialization {
        public static SessionFactory sessionFactory=null;
        public static SessionFactory getSessionFactory(){
            if(sessionFactory==null)
                sessionFactory=new Configuration().configure("hibernate.cfg.xml").buildSessionFactory();
            return sessionFactory;
        }
        public static Blob getBlob(Object object) throws IOException{
            ByteArrayOutputStream byteArrayOutputStream=new ByteArrayOutputStream();
            ObjectOutputStream objectOutputStream=new ObjectOutputStream(byteArrayOutputStream);
            objectOutputStream.writeObject(object);
            ByteArrayInputStream bis=new ByteArrayInputStream(byteArrayOutputStream.toByteArray());
            return Hibernate.createBlob(bis);
        }
           
        public static void writeObjectToDB(Object object) throws IOException{
            Test test=new Test();
            test.setContent(getBlob(object));
            Session session=getSessionFactory().openSession();
            Transaction tx =session.beginTransaction();
            session.save(test);
            tx.commit();
            session.close();
        }
           
        public static User readObjectFromDB(int id) throws IOException, SQLException, ClassNotFoundException{
            Session session=getSessionFactory().openSession();
            Test test=(Test) session.get(Test.class,id);
            ObjectInputStream objectInputStream=new ObjectInputStream(test.getContent().getBinaryStream());
            return (User)objectInputStream.readObject();
        }
           
           
           
        public static void main(String[] args) throws IOException, SQLException, ClassNotFoundException {
            User user=new User();
            user.setId(1);
            user.setAge(22);
            user.setName("zhangsan");
            writeObjectToDB(user);
               
            User user1=readObjectFromDB(2);
            System.out.println(user1.getId());
            System.out.println(user1.getName());
            System.out.println(user1.getAge());
               
        }  
    }


    • 本站(WWW.169IT.COM)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
      本站(WWW.169IT.COM)站内文章除注明原创外,均为转载,整理或搜集自网络.欢迎任何形式的转载,转载请注明出处.
      转载请注明:文章转载自:[169IT-IT技术资讯]
      本文标题:java将类序列化并存储到mysql(使用hibernate)
    相关文章推荐:


    站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2017,169IT.COM,E-mail:www_169it_com#163.com(请将#改为@)

    浙ICP备11055608号