存储大字段 Session session = null; Transaction tx = null; try { session = HibernateSessionFactory.getSession(); tx = session.beginTransaction(); TMeeting meet = new TMeeting(); meet.setMeetname("会议主题"); meet.setMeetfile(Hibernate.createBlob(new byte[1]));//Blob类型的用于存放可进行byte读写的数据。例如图片。 meet.setContent(Hibernate.createClob(" "));//用于存放文本 session.save(meet);//将数据缓存到一级缓存 session.flush();//将数据强制同步到数据库缓存,但并不提交 session.refresh(meet, LockMode.UPGRADE);//将该对象进行for update Blob blob = meet.getMeetfile(); FileInputStream in = new FileInputStream("c:/1.jpg"); OutputStream out = blob.setBinaryStream(0); byte[] b = new byte[10240]; int len; while((len = in.read(b))!=-1) { out.write(b, 0, len); out.flush(); } in.close(); out.close(); Clob clob = meet.getContent(); BufferedReader reader = new BufferedReader(new FileReader("c:/1.txt")); Writer writer = clob.setCharacterStream(0); String str = null; while((str = reader.readLine())!=null) { writer.write(str); } reader.close(); writer.close(); tx.commit(); } catch (Exception e) { e.printStackTrace(); tx.rollback(); } finally { HibernateSessionFactory.closeSession(); } 读取大字段(一般采用属性的延迟加载策略) Session session = null; session = HibernateSessionFactory.getSession(); TTest test = (TTest) session.get(TTest.class, 7L); System.out.println("========================="); Clob clobContent = test.getClobcontent(); Blob blobContent = test.getBlobcontent(); try { // 读取Clob数据 String str = clobContent.getSubString(1L, Integer.parseInt(String.valueOf(clobContent.length()))); System.out.println(str); // 读取Blob数据 InputStream in = blobContent.getBinaryStream(); byte[] b=new byte[1024]; int len=0; OutputStream out=new FileOutputStream("E:/blobTest.jpg"); while((len=in.read(b))!=-1){ out.write(b, 0, len); out.flush(); } in.close(); out.close(); } catch (Exception e) { e.printStackTrace(); }