-
主键生产策略: increment //适用于代理主键,由hibernate以递增方式生成 identity //适用于代理主键,由底层数据库生成标识符 sequence //适用于代理主键,hibernate根据底层数据库的序列生成标识符(要求底层数据库支持序列) hilo //适用于代理主键,hibernate分局hight/low算法生成标识符 seqhilo //适用于代理主键,使用一个高/低位算法来高效生成long,short或者int类型的标识符 native //适用于代理主键,根据底层数据库对自动生成的标识的方式,自动选择identity,sequence或者hilo uuid.hex //适用于代理主键,hibernate采用128位的UUID算法生成标识符 uuid.string //适用于代理主键,UUID被编码成16位字符长的字符串 assigned //适用于代理主键,由java程序负责生成标识符 foreign //适用于代理主键,使用另一个向关联的对象的标识符查看全部
-
openSession与getCurrentSession的区别: (1)getCurrentSession在事务提交或者回滚之后会自动关闭,而openSesssion需要你手动关闭。如果使用openSession而没有手动关闭,多次之后会导致连接池溢出! (2)openSession每次创建新的session对象,getCurrentSession使用现有的session对象 PS: 1.openSession 每次使用都是打开一个新的session,使用完需要调用close方法关闭session; 2.getCurrentSession 是获取当前session对象,连续使用多次时,得到的session都是同一个对象,这就是与openSession的区别之一 ; 一般在实际开发中,往往使用getCurrentSession多,因为一般是处理同一个事务,所以在一般情况下比较少使用openSession;查看全部
-
如何获得session对象? (1)openSessionion (2)getCurrentSession 如果使用getCurrentSession需要在hibernate.cfg.xml文件中进行配置: 如果是本地事务(jdbc事务) <property name="hibernate.current_session_context_class">thread</property> 如果是全局事务(jta事务) <property name="hibernate.current_session_context_class">jta</property>查看全部
-
hibernate对数据的操作都是封装在事务中,并且默认是非自动提交的昂视,所以用session保存对象时,如果不开启事务,并且手工提交事务,对象并不会真正保存在数据库中。 如果想让hibernate想jdbc那样自动提交事务,必须调用session对象的doWork()方法,获得jdbc的connection后,设置其为自动提交事务模式(注意:通常并不推荐这样做) 使用doWork()方法自动提交事务时,session应该调用flush()方法查看全部
-
hibernate执行流程: 1创建Configuration 用来读取Hibernate.cfg.xml配置文件 2通过Configuration创建SessionFactory 用来读取User.hbm.xml文件 3通过SessionFactory创建Session 进行save delete update get 以及复杂的查询操作 执行session时 需要将它封装在事务Transaction中 结束之前要进行事务的提交commit session的关闭session.close()查看全部
-
通过Hibernate API编写访问数据库 //创建配置对象 Configuration config=new Configuration().configure(); //创建服务注册对象 ServiceRegistry serviceRegistry=new ServiceRegistryBuilder().applySettings(config.getProperties).buildServiceRegistry(); //创建会话工厂 sessionFactory=config.buildSessionFactory(serviceRegistry); //打开会话 session=sessionFactory.openSession(); //打开事务 transaction=session.beginTransaction(); 在destroy()方法内 transaction.commit();//提交事务 session.close();//关闭会话 sessionFactory.close();//关闭会话工厂查看全部
-
写SQL的不便之处查看全部
-
1.ORM是一种面向对象编程的方法,用这种方法来避免写数据库底层语言sql语句,这样有利于java的跨平台,扩展。维护。而hiberenate是ORM的一种框架 2.hirbernate开发基本步骤: 编写配置文档hirbernate.cfg.xml文档 编写实体类 生成对应尸体类的映射文件并添加到配置文档中 调用hirbernate api进行测试 3.什么是seesion hirbernate操作数据库都要用session,调用session.api方法来操作 openssion()和getCurrentSession()区别: openssion每次都会创建一个新的对象,用完后要调用session.close()将其关闭,否则多次之后会出现溢出的现象。 而getCurrentSession是单例模式,每次创建的都是同一个对象,使用完后自动会销毁。 4.单表操作方法 save delete update get load get()和load()区别: get获取后马上发送sql语句,返回一个实体 load获取后进行缓存,调用都发送 返回一个实体代理对象查看全部
-
Hibernate单表操作 1.单一主键 <generator class="assigned|native" />//assigned为手工赋值方式,native为自动增长 2.基本类型 3.对象类型 4.组件属性 <component name="address" class="hibernate001.Address"> <property name="postcode" column="POSTCODE"></property> <property name="phone" column="PHONE"></property> <property name="address" column="ADDRESS"></property> </component> 5.单表操作CRUD实例 (1)save (2)update (3)delete (4)get/load(查询单个记录) get与load区别: 1.get()调用后立即发出sql语句,并返回持久化对象;load()使用对象时才发出sql语句,返回的是代理对象 2.当查询到数据为空时,get返回null,load抛出objectNotFound异常查看全部
-
Hibernate单表操作 1.单一主键 2.基本类型 3.对象类型 4.组件属性 5.单表操作CRUD实例查看全部
-
单表操作CRUD实例 (1)save (2)update (3)delete (4)get/load(查询单个记录) get与load区别: 1.get()调用后立即发出sql语句,并返回持久化对象;load()使用对象时才发出sql语句,返回的是代理对象 2.当查询到数据为空时,get返回null,load抛出objectNotFound异常查看全部
-
组件属性 <component name="address" class="hibernate001.Address"> <property name="postcode" column="POSTCODE"></property> <property name="phone" column="PHONE"></property> <property name="address" column="ADDRESS"></property> </component>查看全部
-
@Test public void saveImage() throws Exception{ Student s=new Student(1,"李四","男",new Date(),"北京"); File f=new File("d:"+File.separator+"boy.jpg"); InputStream input=new FileInputStream(f); Blob image=Hibernate.getLobCreator(session).createBlob(input, input.available()); s.setImage(image); session.save(s); } @Test public void readImage() throws Exception{ Student s=(Student) session.get(Student.class, 1); Blob image=s.getImage(); InputStream input=image.getBinaryStream(); File f=new File("d:"+File.separator+"girl.jpg"); OutputStream output=new FileOutputStream(f); byte[] buff=new byte[input.available()]; input.read(buff); output.write(buff); output.close(); input.close(); }查看全部
-
hibernate执行流程: 1创建Configuration 用来读取Hibernate.cfg.xml配置文件 2通过Configuration创建SessionFactory 用来读取User.hbm.xml文件 3通过SessionFactory创建Session 进行save delete update get 以及复杂的查询操作 执行session时 需要将它封装在事务Transaction中 结束之前要进行事务的提交commit session的关闭session.close()查看全部
-
对象类型查看全部
举报
0/150
提交
取消