hibernate使用annotation(注解)测试/生成数据库表

<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <!-- ?useUnicode=true&characterEncoding=UTF-8设置数据库编码,mysql安装时默认为Latin1 --> <hibernate-configuration> <session-factory> <property name="connection.driver_class">net.sourceforge.jtds.jdbc.Driver</property> <property name="connection.url">jdbc:jtds:sqlserver://localhost:1433/sms</property> <property name="connection.username">sa</property> <property name="connection.password">123</property> <property name="dialect">org.hibernate.dialect.SQLServerDialect</property> <property name="hbm2ddl.auto">update</property> <!--是否在控制台显示SQL语句,开发阶段开启,便于调试--> <property name="show_sql">true</property> <!--是否在控制台格式化显示SQL语句,方便查看--> <property name="format_sql">true</property> <!-- <property name="cache.use_second_level_cache">true</property> <property name="cache.use_query_cache">true</property> <property name="cache.provider_class">org.hibernate.cache.EhCacheProvider</property> --> <mapping class="com.sinoglobal.entity.MasUser"/> <mapping class="com.sinoglobal.entity.PlatUser"/> <mapping class="com.sinoglobal.entity.PlatNumberCfg"/> <mapping class="com.sinoglobal.entity.Receive"/> <mapping class="com.sinoglobal.entity.Send"/> <mapping class="com.sinoglobal.entity.Users"/> </session-factory> </hibernate-configuration>

实体类太多,贴一个吧。

package com.sinoglobal.entity; import java.util.Date; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import org.hibernate.annotations.GenericGenerator; @Entity public class Users { private String usid; private String name; private String mobile; private int stat; private Date createtime; public Users() { super(); } public Users(String name, String mobile, int stat, Date createtime) { super(); this.name = name; this.mobile = mobile; this.stat = stat; this.createtime = createtime; } public Users(String usid, String name, String mobile, int stat, Date createtime) { super(); this.usid = usid; this.name = name; this.mobile = mobile; this.stat = stat; this.createtime = createtime; } @Id @GeneratedValue(generator = "system-uuid") @GenericGenerator(name = "system-uuid", strategy = "uuid.hex") public String getUsid() { return usid; } public void setUsid(String usid) { this.usid = usid; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getMobile() { return mobile; } public void setMobile(String mobile) { this.mobile = mobile; } public int getStat() { return stat; } public void setStat(int stat) { this.stat = stat; } public Date getCreatetime() { return createtime; } public void setCreatetime(Date createtime) { this.createtime = createtime; } }
自动生成的HibernateSessionFactory.java类

package unit.data; import org.hibernate.HibernateException; import org.hibernate.Session; import org.hibernate.cfg.Configuration; import org.hibernate.cfg.AnnotationConfiguration; /** * Configures and provides access to Hibernate sessions, tied to the current * thread of execution. Follows the Thread Local Session pattern, see * {@linkhttp://hibernate.org/42.html }. */ public class HibernateSessionFactory { /** * Location of hibernate.cfg.xml file. Location should be on the classpath * as Hibernate uses #resourceAsStream style lookup for its configuration * file. The default classpath location of the hibernate config file is in * the default package. Use #setConfigFile() to update the location of the * configuration file for the current session. */ private static String CONFIG_FILE_LOCATION = "/hibernate.cfg.xml"; private static final ThreadLocal<Session> threadLocal = new ThreadLocal<Session>(); private static Configuration configuration = new AnnotationConfiguration(); private static org.hibernate.SessionFactory sessionFactory; private static String configFile = CONFIG_FILE_LOCATION; static { try { configuration.configure(configFile); sessionFactory = configuration.buildSessionFactory(); } catch (Exception e) { System.err.println("%%%% Error Creating SessionFactory %%%%"); e.printStackTrace(); } } private HibernateSessionFactory() { } /** * Returns the ThreadLocal Session instance. Lazy initialize the * <code>SessionFactory</code> if needed. * * @return Session * @throws HibernateException */ public static Session getSession() throws HibernateException { Session session = (Session) threadLocal.get(); if (session == null || !session.isOpen()) { if (sessionFactory == null) { rebuildSessionFactory(); } session = (sessionFactory != null) ? sessionFactory.openSession() : null; threadLocal.set(session); } return session; } /** * Rebuild hibernate session factory * */ public static void rebuildSessionFactory() { try { configuration.configure(configFile); sessionFactory = configuration.buildSessionFactory(); } catch (Exception e) { System.err.println("%%%% Error Creating SessionFactory %%%%"); e.printStackTrace(); } } /** * Close the single hibernate session instance. * * @throws HibernateException */ public static void closeSession() throws HibernateException { Session session = (Session) threadLocal.get(); threadLocal.set(null); if (session != null) { session.close(); } } /** * return session factory * */ public static org.hibernate.SessionFactory getSessionFactory() { return sessionFactory; } /** * return session factory * * session factory will be rebuilded in the next call */ public static void setConfigFile(String configFile) { HibernateSessionFactory.configFile = configFile; sessionFactory = null; } /** * return hibernate configuration * */ public static Configuration getConfiguration() { return configuration; } }
测试类:

package unit.data; import junit.framework.TestCase; public class HibernateAnnotationTest extends TestCase { public void testHibernate() { HibernateSessionFactory.getSessionFactory(); } }


如果你没有自动生成的HibernateSessionFactory:

参考它的源码,你也可以自己手动写:

package unit.data; import org.hibernate.cfg.AnnotationConfiguration; import org.hibernate.cfg.Configuration; import junit.framework.TestCase; public class HibernateAnnotationTest extends TestCase { public void testHibernate() { Configuration cfg = new AnnotationConfiguration().configure("/hibernate.cfg.xml"); cfg.buildSessionFactory(); } }

我们可以看看它与传统hibernate的XML方式的不同:

package unit.data; import junit.framework.TestCase; import org.hibernate.cfg.Configuration; import org.hibernate.tool.hbm2ddl.SchemaExport; public class CreateDBTest extends TestCase{ public void testCreateDB() { Configuration cf = new Configuration().configure(); SchemaExport se = new SchemaExport(cf); se.create(true, true); } }


附:

@ManyToOne中是在本类对应的数据库表中生成

而@oneToMany中是在多的一方生成对应一方面的ID


OK,打完收工。




@ManyToOne中是在本类对应的数据库表中生成

而@oneToMany中是在多的一方生成对应一方面的ID


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值