Hibernate入门学习(7)----单表操作总结
来源:互联网 发布:儿童冬季服装淘宝网 编辑:程序博客网 时间:2024/06/05 05:16
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三个属性。
之前的属性:
<property name="address" type="java.lang.String"> <column name="ADDRESS" /></property>
之后的属性:
<component name = "address" class="Address"> <property name ="postcode" column="POSTCODE"></property> <property name ="phone" column="PHONE"></property> <property name ="address" column="ADDRESS"></property></component>
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
阅读全文
0 0
- Hibernate入门学习(7)----单表操作总结
- 【Hibernate框架学习】:Hibernate进阶之单表操作
- Hibernate单表操作
- Hibernate---单表操作
- Hibernate单表操作
- Hibernate单表操作
- hibernate单表操作
- Hibernate单表操作
- Hibernate单表操作
- Hibernate单表操作
- Hibernate单表操作
- Hibernate单表查询总结(上)
- hibernate单表查询总结(下)
- Hibernate入门学习(4)----Hibernate配置文档常用总结
- Hibernate学习总结--入门1
- Hibernate学习总结--入门2
- 【Hibernate】(3)Hibernate单表操作
- Java学习笔记之Hibernate-Hibernate入门和单表增删改查
- 鱼眼图像畸变校正_V
- Error: unable to open database "BookStore.db": unable to open database file
- 171203之Ajax原理
- Angular学习(四)之AngularJS 控制器
- 基于POCO框架的TCP连接分流程序
- Hibernate入门学习(7)----单表操作总结
- Linux中编译C语言程序
- Mybatis和Spring的整合
- 【Mybatis】Cause: java.sql.SQLException: sql injection violation, syntax error: ERROR. token : WHERE,
- 神经网络运作机制
- 全排列问题
- 使用函数
- 梯度下降求解逻辑回归
- 将文件上传到七牛—Android