java 动态实体,15.3.2 实体对象与动态实例化对象查询

15.3.2  实体对象与动态实例化对象查询

实体对象查询

在HQL查询语句中,如果直接查询实体对象,不能使用select *子句的形式,但可以使用"from 对象"的形式进行查询。

例如:from User

上述HQL语句意味着查询User对象所对应数据表中的所有记录,使用此语句可获取已封装好的User对象的集合。

动态实例化对象查询

在数据查询过程中,当数据表中存在大量的字段,如果通过"select *"的形式将所有字段都查询出来,将会对性能方面造成一定的影响。在HQL中,可以通过只查询所需要的属性进行查询。

例如:select id, name from User

上述HQL语句只查询了User对象中的id与name属性,可以避免查询数据表中的所有字段而带来的性能方面的问题。但在Hibernate中,此语句返回的却是Object类型的数组,它失去了原有的对象状态,破坏了数据的封装性。要解决此问题,可以通过动态实例化对象来查询。

例如:selectnewUser(id,name) from User

这种查询方式通过new关键字对实体对象动态实例化,它可以对数据作出封装,既不失去数据的封装性,又可提高查询的效率。

例15.13  查询User对象中的所有数据。在UserDao类中编写findUser()方法,用于查询所有User对象。其关键代码如下:(实例位置:光盘\TM\Instances\15.13)//获取Session

session = HibernateUtil.getSession();

session.beginTransaction();//开启事务

String hql ="from User";//HQL语句

//创建Query对象

Query query = session.createQuery(hql);

list = query.list();//获取查询结果集

//提交事务

session.getTransaction().commit();

HQL查询方式使用Query进行查询,其list()方法返回查询的结果,实例中将其输出到网页之中,其运行结果如图15.19所示。

d4a158fdea89ecbda8f5c04b307c4c57.png

图15.19  实例运行结果

【责任编辑:云霞 TEL:(010)68476606】

点赞 0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值