频道栏目
首页 > 程序开发 > 移动开发 > 其他 > 正文
Hibernate编程开发入门教程:单表操作总结
2017-12-04 09:49:27      个评论    来源:jin's blog  
收藏   我要投稿

1、以Blob类型保存图片

直接一行代码读懂:

public void testWriteBlob() throws IOException{
            Students s = new Students(2,"jj","男",new Date(),"山大");
            //获得照片文件
            File file = new File("D:"+File.separator+"1.JPG");
            //获得输入流
            FileInputStream input = new FileInputStream(file);
            //创建Blob对象
            Blob image = Hibernate.getLobCreator(session).createBlob(input, input.available());
            //设置照片属性
            s.setPicture(image);
            //保存学生
            session.save(s);
            //前提是在Student类中新建Blob类型的属性picture
        }

2、读取Blob类型的数据

public void testReadBlob() throws SQLException, IOException{
            //获得学生对象,第一个参数学生类的class,第二个参数:主键
            Students s =(Students)session.get(Students.class, 2);
            //获得Blob对象
            Blob image = s.getPicture();
            //获得照片的输入流
            InputStream input = image.getBinaryStream();
            //创建输出流
            File file = new File("D:"+File.separator+"dest.JPG");
            //获得输出流
            FileOutputStream output = new FileOutputStream(file);
            int b;
            while((b = input.read())!=-1){
                output.write(b);
            }
            input.close();
            output.close();
        }

3、组件属性

就是持久化类中的属性有一个是类的对象,这个属性就是组件属性。
组件属性和普通的属性的用法也没有什么不同,唯一不同的连个地方:
1、生成类对象的时候,set这个属性的时候,要先生成这个组件属性的对象,再将这个对象set进去。
2、hbm配置文档:假如之前的adress属性是String类型的,之后的是一个类,然后这个类里有phone、postcode、adress三个属性。

之前的属性:


          

之后的属性:


   
   
   

4、单表增删改查的操作

1、 save保存对象

public void testStudents(){
            //生成学生对象
            Students s = new Students(1,"jinjin","男",new Date(),"山科");
            session.save(s);//保存对象到数据库

        }

2、update方法更新表的信息

public void testUpdatestudents(){
//第一个参数是查询表的类类型,第二个参数是主键
Students s =(Students)session.get(Students.class, 2);
s.setName("jiuejie");
session.update(s);
}

3、load方法获取学生对象:

public void testLoadstudents(){
//第一个参数是查询表的类类型,第二个参数是主键
Students s =(Students)session.load(Students.class, 2);
System.out.println(s);

4、Get方法获取学生对象:

public void testGetstudents(){
//第一个参数是查询表的类类型,第二个参数是主键
Students s =(Students)session.get(Students.class, 2);
System.out.println(s);
}

5、delete方法删除学生对象

public void testDeletestudents(){
//第一个参数是查询表的类类型,第二个参数是主键
Students s =(Students)session.get(Students.class, 2);
session.delete(s);
}

6、get方法和load方法的区别

1.在不考虑缓存的情况下,get方法会在调用之后立即向数据库发出sql语句,返回持久化对象。
2.load方法会在调用后返回一个代理对象,该代理对象只保存了实体对象的id,直到使用对象的非主键属性时才会发出sql语句。
3.查询数据库中不存在的数据时,get方法返回null,load方法抛出异常org.hibernate.ObjectNotFoundException
点击复制链接 与好友分享!回本站首页
上一篇:游戏引擎Mojoc解析:C实现泛型ArrayList
下一篇:gtest开发环境详细搭建教程
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站