hibernate中表名和Modle类名不同时的配置
来源:互联网 发布:什么软件升级win10 编辑:程序博客网 时间:2024/05/14 12:12
有的时候编写数据库的表名是有数据库的命名规范,而在Java中又有java的命名规范,当数据库的命名规范和Java的命名规范不一样是导致Modle的类的类名不一定是数据库的表名,我们在Modle里如何设置数据库的表名呢?下面我们通过一个注解来解决数据库表名和类名不同时的配置。
第一步:创建Java普通工程,新建三个项目包,分别是com.ygc.hibernate.main | com.ygc.hibernate.modle | com.ygc.hibernate.utils分别代表的意思是主方法测试hibernate ;数据库对应的Modle类;工具类的包,然后编写Modle类,下面我们模拟一个People的表来使用这个配置。
package com.ygc.hibernate.modle;import java.io.Serializable;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.GenerationType;import javax.persistence.Id;import javax.persistence.Table;//如果类名和数据库的表名不同时我们通过Table注解来指定数据库的表名也是本例要说的的配置@Entity@Table(name="m_people")public class People implements Serializable {private int id;private String name;private String sex;private long telphone;@Id@GeneratedValue(strategy=GenerationType.AUTO)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;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public long getTelphone() {return telphone;}public void setTelphone(long telphone) {this.telphone = telphone;}}
第二步:编写测试类和工具类
package com.ygc.hibernate.main;import org.hibernate.Session;import org.hibernate.SessionFactory;import com.ygc.hibernate.modle.People;import com.ygc.hibernate.utils.HibernateUtils;public class PeopleTest {/** * @param args */public static void main(String[] args) {People people = new People();people.setName("汪峰");people.setSex("男");people.setTelphone(15875586320L);SessionFactory sessionFactory = HibernateUtils.getFactory();Session session = sessionFactory.openSession();session.beginTransaction();session.save(people);session.getTransaction().commit();session.close();sessionFactory.close();}}
package com.ygc.hibernate.utils;import org.hibernate.SessionFactory;import org.hibernate.cfg.AnnotationConfiguration;import org.hibernate.cfg.Configuration;public class HibernateUtils {private static HibernateUtils instance;private HibernateUtils(){}public static HibernateUtils gHibernateUtils(){if(instance==null){instance = new HibernateUtils();}return instance;}public static SessionFactory getFactory(){Configuration configuration = new AnnotationConfiguration().configure();return configuration.buildSessionFactory();}}
第三步hibernate的配置文件文件名称为hibernate.cfg.xml
<?xml version='1.0' encoding='utf-8'?><!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"><hibernate-configuration> <session-factory> <!-- Database connection settings --> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> <property name="connection.url">jdbc:mysql://localhost/hibernate</property> <property name="connection.username">root</property> <property name="connection.password">root</property> <!-- JDBC connection pool (use the built-in) --> <!--<property name="connection.pool_size">1</property>--> <!-- SQL dialect --> <property name="dialect">org.hibernate.dialect.MySQLDialect</property> <!-- Enable Hibernate's automatic session context management --> <!--<property name="current_session_context_class">thread</property>--> <!-- Disable the second-level cache --> <!--<property name="cache.provider_class">org.hibernate.cache.internal.NoCacheProvider</property>--> <!-- Echo all executed SQL to stdout --> <property name="show_sql">true</property> <!--自动创建表--> <property name="hbm2ddl.auto">create</property> <!-- Drop and re-create the database schema on startup --> <!--<property name="hbm2ddl.auto">update</property>--> <!--<mapping resource="com/ygc/hibernate/modle/Students.hbm.xml"/>--> <mapping class="com.ygc.hibernate.modle.People"/> </session-factory></hibernate-configuration>
log4j的配置文件
# Configure logging for testing: optionally with log file# debug,info,warn,error,fatallog4j.rootLogger=debug, stdout, logfilelog4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.layout=org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%nlog4j.appender.logfile=org.apache.log4j.FileAppenderlog4j.appender.logfile.File=D:/logs/hibernate.loglog4j.appender.logfile.layout=org.apache.log4j.PatternLayoutlog4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%nlog4j.logger.org.hibernate.tool.hbm2ddl=debug
查看数据的的变化情况我们在Modle类中设置的数据库表名为m_people,而类名是People,查看的表名为m_people说句我们设置的注解起效了。
数据库的查看
mysql> show tables;+---------------------+| Tables_in_hibernate |+---------------------+| class || m_people || music || product || students || teacher || xuxudan |+---------------------+7 rows in set (0.14 sec)
没错数据库中就有一个m_people的表。
Demo下载:下载
- hibernate中表名和Modle类名不同时的配置
- hibernate中Modle的属性名称和数据字段名称配置的方法
- 获取sqlserver中表名和列的信息
- 获取注解配置的hibernate的model对应字段名和表名
- Hibernate中表的一对一关系
- 获取数据库中表的列名
- 关于各种数据库中表名的大小写
- 如何查询数据库中表的字段名?
- PowerDesigner中表名和字段名大小写转换
- ORACLE中表,视图名变大写和BLOB操作的问题
- ORACLE中表,视图名变大写和BLOB操作的问题
- 用PowerDesigner设计表时,生成的SQL语句中表名和列名总是带引号的解决方法
- android studio 新建modle和删除modle
- 在一个spring配置文件中同时配置hibernate和jdbc
- 在一个spring配置文件中同时配置hibernate和jdbc
- 在一个spring配置文件中同时配置hibernate和jdbc
- 在一个spring配置文件中同时配置hibernate和jdbc
- 新建类名和保存时的类名不同时编译错误提示
- eclipse导出jar包的两种方式
- 【Android】android系统自带样式
- UVALive 3605 Roommate
- spring security3.x学习(15)_扩展JdbcDaoImpl。
- 如何设等概率的随机函数
- hibernate中表名和Modle类名不同时的配置
- vim使用笔记
- spring security3.x学习(16)_JdbcUserDetailManager的使用
- 黑马程序员_正则表达式
- mybatis generator 配置文件解析
- cocos2d-x 场景切换时由资源预加载问题引起的场景无法切换的问题
- Code Jam 2010 Round 1B Problem A
- 求两个串中的第一个最长子串
- 阿里研发一笔试题foo(2^31-3)