hibernate_namedQuery, HQL解析优化

来源:互联网 发布:网络视频直播美女 编辑:程序博客网 时间:2024/06/01 08:18
public void testNamedQuery(){Session session = HibernateUtil.getInstance().getSession();//HQL解析成SQL是非常耗费资源的,假如你的HQL被访问了上千万次. //可以在xxx.hbm.xml中定义该HQL, hibernate 在启动时就会去解析它,之后用到就不用再解析了.for(int i=0; i<1000; i++){session.getNamedQuery("SELECT_ALL_EMPLOYEE").setParameter("name", "jack").list();}session.close();}



xxx.hbm.xml 文件配置示例如下:

<hibernate-mapping package="cd.itcast.day4.extend"><!-- per table --><class name="Product" table="product"><id name="id" column="id"><generator class="org.hibernate.id.enhanced.TableGenerator"><param name="segment_value">IdDomain</param><param name="initial_value">1</param><param name="increment_size">1</param></generator></id><property name="name" column="name"/><property name="price" column="price"/><union-subclass name="BookProduct" table="book_product"><property name="isbn" column="isbn"/></union-subclass><union-subclass name="WearProduct" table="wear_product"><property name="color" column="color"/></union-subclass></class><query name="SELECT_ALL_EMPLOYEE"><![CDATA[FROM Employee e WHERE e.name = :name]]></query></hibernate-mapping>

其中 <![CDATA[...]]>  是为了防止HQL 语句中包含关键字, 如果没有,可以不用.

原创粉丝点击