-
hbm配置文件常用设置 hbm.xml配置文档 <hibernate-mapping<br> schema="schemaName" //模式的名字 catalog="catalogName" //目录的名称 default-cascade="cassade_style" //级联风格 default-access="field/property/CalssName" //访问策略 default-lazy="true/false" //加载策略 package="packagename" //默认包名 /> <class<br> name="ClassName" //对应映射的类<br> table="tableName" //对应映射数据库的表<br> batch-size="N" //抓取策略,一次抓取多少记录<br> where="condition" //条件 eg:抓取条件<br> entity-name="EntiyName" //如果需要映射多张表<br> /> //表的主键 <id name="propertyName" //对应的属性 type="typeName" //对应类型 column="column_nam" //映射数据库中表当中字段名的名称 length="length" //指定长度 <generator class="generatorClass"/>//主键生成策略 </id> 主键生成策略: 由于使用MYSQL,着重讲解一下两个 native:有底层数据库自动生成标识符 assigned:手工赋值查看全部
-
如何获得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> openSession 每次使用都是打开一个新的session,使用完需要调用close方法关闭session; getCurrentSession 是获取当前session对象,连续使用多次时,得到的session都是同一个对象,这就是与openSession的区别之一 ; 一般在实际开发中,往往使用getCurrentSession多,因为一般是处理同一个事务,所以在一般情况下比较少使用openSession; 1,事务: 事务表示一个由一系列的数据库操作组成的不可分割的逻辑单位,其中的操作要么全做要么全都不做 2,JDBC事务 JDBC事务由Connnection对象控制管理,也就是说,事务管理实际上是在JDBC Connection中实现。事务周期限于Connection的生命周期。 3,JTA事务 提供了跨数据库连接(或其他JTA资源)的事务管理能力查看全部
-
transaction简介:事务 ·hibernate对数据的操作都是封装在事务当中,并且默认是非自动提交的方式。 所以用session保存对象时,如果不开启事务,并且手工提交事务,对象并不会真正保存在数据库中。 ·如果想让hibernate想jdbc那样自动提交事务,必须调用session对象的doWork()方法,活得jdbc的connection后,设置其为自动提交事务模式。(注意:通常并不推荐这样做) --自动提交事务(注意:通常并不推荐这样做)--- //不开启事务(transaction.commit()//提交事务)的方式 @Test public void testSaveStudents(){ Stusdents s= new Students(1,"ZSF",new Date(),"wudang"); session.doWork(new Work(){ @Override public void execute(Connection connection) throws SQLException{ connection.setAutoCommit(true); } }) session.save(s);//保存对象进入数据库 session.flush();//强制发出SQL语句(通过SQL写入SQL) } ---自动提交事务(注意:通常并不推荐这样做)--- private Transaction transaction; transaction = session.beginTransaction();//打开事务 transaction.commit()//提交事务 需要注意的是:在使用save()方法后并不会真正输出sql语句,需要调用flush()强制输出sql语句才可以。然后因为采用了自动提交方式(setAutoCommit(true)),数据才真正保存在数据库。查看全部
-
关于session的说明: 1.不建议直接使用jdbc的connection操作数据库,而是通过使用session操作数据库; 2.session可以理解为操作数据库的对象; 3.session与connection,是多对一的关系,每个session都有一个与之对应的connection,一个connection不同时刻可以供多个session使用; 4.把对象保存到关系型数据库中需要调用session的各种方法,如:save(),update(),delete(),createQuery()等。 1.Configuration对象:配置文件对象,读取hibernate配置文件xxx.cfg.xml 2.SessionFactory对象:读取对象/关系映射文件 xxx.hbm.xml 3.session对象:数据库链接对象,获得之后可以操作数据库。可以理解为操作数据库的对象 4.Transaction:使用session操作数据库需要开启的事务查看全部
-
hibernate配置文件的常用配置 hbm2ddl.auto: 1.create表示每次生成新的数据表,再对数据操作 2.update表示在原有旧的数据表上执行操作 3.create-drop表示先创建后删除(不常用) 4.validate:用现有的表结构和原来的表结构进行验证,如果不同就不创建 hibernate.default_schema:给数据库表加上一个表前缀查看全部
-
@Before public void init() { // 创建配置对象 Configuration config = new Configuration().configure(); config.addClass(Student.class); // 创建服务注册对象 ServiceRegistry serviceRegistery = new StandardServiceRegistryBuilder().applySettings(config.getProperties()).build(); // 创建会话工厂对象 sessionFactory = config.buildSessionFactory(serviceRegistery); // 创建会话对象 session = sessionFactory.openSession(); // 开启事务 transaction = session.beginTransaction(); } @Test public void testSaveStudent() { Student s = new Student(1,"张三丰","男",new Date(),"武当山"); session.save(s); } @After public void destory() { // 提交事务 transaction.commit(); // 关闭会话 session.close(); // 关闭会话工厂 sessionFactory.close(); }查看全部
-
使用Junit进行测试 要使用到的标签: @Test:要测试的方法。 @Before:初始化方法(表示在测试前会先执行before方法进行初始化)。 @After:释放资源。 执行次序:@before标签下的方法——>@test方法——>@after释放资源。查看全部
-
<session-factory> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> <property name="connection.url">jdbc:mysql://127.0.0.1:3306/hibernate?useUnicode=true&characterEncoding=UTF-8</property> <property name="connection.username">root</property> <property name="connection.password"></property> <property name="dialect">org.hibernate.dialect.MySQL5Dialect</property> <property name="show_sql">true</property> <! -- 在控制台显示出sql语句 -- > <property name="format_sql">true</property> <! -- 按照格式化显示出sql语句 -- > <property name="hbm2ddl.auto">create</property> <! -- 会重新创建一张表 -- > <mapping resource="com/Student.hbm.xml" ></mapping> </session-factory>查看全部
-
0x5AC0 get方法立即发出sql语句 load不会 get方法返回的是实体对象 load是代理对象 查找失败时 get返回null load抛出异常 时间: 2016-01-05 17查看全部
-
Hibernate中get和load的区别(2)查看全部
-
Hibernate中get和load的区别(1)查看全部
-
测试读取数据库中的blob类型的图片查看全部
-
测试图片作为blob类型存入数据库查看全部
-
对象类型对应关系查看全部
-
基本类型 Hibernate映射类型—Java类型—标准SQL类型 间对应关系查看全部
举报
0/150
提交
取消