hibernate 非xml实体类配置方法!
hibernate 非xml实体类配置方法!
这个是hibernate.cfg.xml配置文件
<?xml version='1.0' encoding='UTF-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <!-- Generated by MyEclipse Hibernate Tools. --> <hibernate-configuration> <session-factory> <property name="connection.url">jdbc:mysql://localhost:3306/cms?useUnicode=true&characterEncoding=UTF-8</property> <property name="dialect">org.hibernate.dialect.MySQLDialect</property> <property name="connection.username">root</property> <property name="connection.password">1234</property> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> <!-- test2 注入Entity.class--> <mapping class="com.bird.entity.JcChannel"/> <mapping class="com.bird.entity.JcChannelExt"/> <mapping class="com.bird.entity.JcChnlGroupContri"/> <mapping class="com.bird.entity.JcSiteFlow"/> <mapping class="com.bird.entity.ITest"/> </session-factory> </hibernate-configuration>
其中 <mapping class="com.bird.entity.ITest"/> 指向类名。
下面是这个类的代码,其中用了ITest注解。
package com.bird.entity; import java.io.Serializable; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Table; @Entity @Table(name = "i_test") public class ITest implements Serializable { private static final long serialVersionUID = 1L; private int id; private String name; @Id public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
最重要的是工具类 HibernateSessionFactory.java ,
因为采用了 Configuration configuration = new AnnotationConfiguration(); 这段代码创建Configuration ,所以才能不用去写实体类的xml配置文件了。
记住这个类:new AnnotationConfiguration();
(这个类要用 session.beginTransaction().commit(); 提交请求!)
TestUti.java 测试类代码,含有删改查功能
package com.bird.channel; import java.util.Date; import java.util.List; import org.hibernate.Query; import org.hibernate.Session; import com.bird.entity.JcChannel; import com.bird.entity.JcChannelExt; import com.bird.entity.JcChnlGroupContri; import com.bird.entity.JcSiteFlow; import com.bird.util.HibernateSessionFactory; public class TestUtil { //查询的例子 public List<JcChannel> getChannelList() { Session session = HibernateSessionFactory.getSession(); String hql = "from JcChannel where parent_id is not null "; Query query = session.createQuery(hql); List<JcChannel> jchList = (List<JcChannel>) query.list(); for (int i = 0; i < jchList.size(); i++) { JcChannel jcEn = jchList.get(i); System.out.println(jcEn.getChannel_id()); } return jchList; } //查询最大id的例子 public int getChannelMaxIdByHql() { int id = 0; Session session = HibernateSessionFactory.getSession(); String hql = "select max(channel_id) from JcChannel"; Query query = session.createQuery(hql); List jchList = query.list(); if (jchList.size() > 0) { id = Integer.parseInt(jchList.get(0).toString()); } return id; } //查询最大id的例子 public int getChannelMaxIdBySql() { int id = 0; Session session = HibernateSessionFactory.getSession(); String hql = "select max(channel_id) from jc_channel "; Query query = session.createSQLQuery(hql); List jchList = query.list(); if (jchList.size() > 0) { id = Integer.parseInt(jchList.get(0).toString()); } return id; } // 修改的例子 public int updateChannelMaxId() { Session session = HibernateSessionFactory.getSession(); String hql = "update jc_channel t set t.rgt = 2 "; Query query = session.createSQLQuery(hql); int over = query.executeUpdate(); session.beginTransaction().commit(); return over; } // 删除的例子 public int deleteChannelMaxId(int id) { Session session = HibernateSessionFactory.getSession(); String hql = "delete from jc_channel where channel_id = ? "; Query query = session.createSQLQuery(hql).setParameter(0, id); int over = query.executeUpdate(); session.beginTransaction().commit(); return over; } }