编程开发 > JAVA > 文章内容

java基础知识总结(185)

2016-9-30编辑:ljnbset

1.Hibernate基本概念

  1)Hibernate有什么作用

    a.Hibernate框架主要用于对数据库操作,是对JDBC的封装.在应用程序中实现数据访问层.

    b.Hibernate好处

     a.避免程序员写大量复杂SQL

     b.SQL移植性较差,Hibernate可以自动生成SQL,移植性强

     c.自动完成数据记录与Java对象之间的映射

 

  2)了解Hibernate基本原理--ORM

    Hibernate基于ORM思想的实现. Object Relation Mapping对象关系.

映射.

    Hibernate可以完成java对象和数据表记录之间的映射,这样程序员在业务层只要对这些对象操作,就可以实现对数据库的操作.

    Hibernate主要构成:

    a.hibernate主配置(数据库连接参数)

    b.实体类<--映射文件-->数据表

 

*2.Hibernate基本使用

   1)主要使用步骤

     a.引入hibernate开发包jar

     b.在src下添加hibernate.cfg.xml主配置文件(1个)

        用于定义数据库连接参数

     c.定义实体类User(n个)

     d.定义映射描述文件User.hbm.xml(n个)

     e.利用Hibernate API完成增删改查操作

 

hibernate.cfg.xml---->User.hbm.xml---->User类

修改了hbm.xml的名称和所在位置,要修改hibernate.cfg.xml的

修改了实体类User的名称和包路径,要修改hbm.xml文件的的name属性

修改了hibernate.cfg.xml的名称和位置,要修改conf.configural("指定路径");

   2)基本操作(必须掌握)

添加 : session.save()

public void AddUser(){

         User user=new User();

                   user.setEmail("nihao@163.com");

                   user.setNickname("di");

                   user.setPassword("1987");

                   Configuration conf=new Configuration();

/默认加载src下的hibernate.cfg.xml

                   conf.configure();

                   //获取Session对象工厂建            

SessionFactory factory =conf.buildSessionFactory();

                   Session session=factory.openSession();

         Transaction tx=session.beginTransaction();

执行添加操作

session.save(user);

//提交事务

tx.commit();

//关闭session

session.close();

删除 : session.delete()

public void  testdelete(){

                   User user=new User();

                   user.setId(1);

                   Session session=Util.getUtil();

                   Configuration conf=new Configuration();

                   conf.configure();

                   SessionFactory factory=conf.buildSessionFactory();

                   Session session=factory.openSession();

                   Transaction tx=session.beginTransaction();

                   session.delete(user);

                   tx.commit();

                   session.close();}

更新 : session.update()

public void testUpdate(){

                   Configuration conf=new Configuration();

                   conf.configure();

                   SessionFactory factory=conf.buildSessionFactory();

                   Session session=factory.openSession();

                   Transaction tx=session.beginTransaction();

                   User user=(User) session.load(User.class, 2);

                   user.setEmail("77758521.@163.com");

                   session.update(user);

                   tx.commit();

                   session.close();

         }

findById查询  session.load()

    findAll查询 Query query = session.createQuery("from User");

                 List list = query.list();

public void testFindAll(){

                   Configuration congfig=new Configuration();

                   congfig.configure();

                   SessionFactory factory=congfig.buildSessionFactory();

                   Session session=factory.openSession();

                   Query query=session.createQuery("from User");

                   List list=query.list();

                   for(User user:list){

                   System.out.println(user.getId()+""+user.getEmail());}

                   session.close();}

   3)Hibernate提供的映射类型

     在hbm.xml映射文件中,利用type="映射类型"使用.

主要作用是指定属性和字段之间的如何进行类型转换

    *整数:integer,long

    *浮点数:double

    *字符串:string

    *日期时间:date(仅包含年月日),timestamp(包含年月日时分秒)

    *布尔:true_false 完成布尔属性和T,F字符之间的转换

          yes_no  完成布尔属性和Y,N字符之间的转换

    其他: big_decimal,big_integer,blob,clob

   4)Hibernate提供的主键生成方式

  仅对添加操作有意义,在添加时,利用指定的主键生成方式获取主键值,写入数据表.

   *a. identity

    Hibernate利用数据库自动增长功能,设置主键值.要求数据库得支持,在设计表时,设置自动增长功能.例如MySQL,SQLServer

   *b. sequence

    Hibernate利用指定的sequence对象,获取nextval,将该值作为主键值.

适用于Oracle

 

        

              user_seq

          

 

   *c. native

     Hibernate会根据方言类型不同,自动选择主键生成方式.如果是MySQLDialect会选择identity;如果是OracleDialect会选择sequence

   *d. increment

     Hibernate会先执行select max(id) from table ,之后将最大值+1作为主键值.

   *e. assigned

     Hibernate忽略主键的管理,需要程序员在程序中指定设置id值.

   f. 其他

     hilo:基于高低位算法生成id值

     uuid:基于uuid算法生成id值

java基础知识总结(183)

热点推荐

登录注册
触屏版电脑版网站地图