简便的说,这个框架用来替代复制的JDBC代码,让你可以轻松地实现对数据库的增删查改而不需要额外写SQL语句
所有包都要配置好,配置文件不写错即可
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"> <hibernate-configuration> <!-- 配置连接信息 --> <session-factory> <!-- 必选配置 --> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> <property name="connection.url">jdbc:mysql://localhost/yiki</property> <property name="connection.username">root</property> <property name="connection.password">123456</property> <property name="dialect">org.hibernate.dialect.MySQLDialect</property> <!-- 必选配置结束 --> <!-- 可选配置 --> <property name="show_sql">true</property> <property name="format_sql">true</property> <!-- C3P0 --> <property name="c3p0.min_size">5</property> <property name="c3p0.max_size">10</property> <property name="c3p0.timeout">12</property> <!-- 自动建表 --> <property name="hbm2ddl.auto">update</property> <!-- 可选配置结束 --> <!-- 配置映射文件 :告诉框架映射文件和javabean对应 --> <mapping resource="com/yiki/bean/Student.hbm.xml" /> </session-factory> </hibernate-configuration>
对于Javabean类用的xml配置Student.hbm.xml
<?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <!-- javabean与表的映射关系 --> <hibernate-mapping> <class name="com.yiki.bean.Student" table="students"> <!-- 主键对应 --> <id name="stuid" > <!-- 自增长 --> <generator class="native"></generator> </id> <property name="stuname" /> <property name="stuage" /> <property name="address"></property> </class> </hibernate-mapping>
测试类
package com.yiki.test; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; import com.yiki.bean.Student; public class Test { public static void main(String[] args) { test(); } public static void test() { Configuration cfg = new Configuration(); cfg.configure();// 此方法为读取配置文件 //获取连接池 SessionFactory sf = cfg.buildSessionFactory(); //创建session对象 Session session = sf.openSession(); //开启事务 Transaction transaction = session.beginTransaction(); Student student = new Student(); student.setStuage(14); student.setStuname("rt"); student.setAddress("update操作"); //保存session session.save(student); //提交 transaction.commit(); //释放 session.close();//单个 sf.close();//所有 } }
日志
重要的是
off即关掉测试用的日志,open开启
log4j.rootLogger = off , console , debug , error
### console ### log4j.appender.console = org.apache.log4j.ConsoleAppender log4j.appender.console.Target = System.out log4j.appender.console.layout = org.apache.log4j.PatternLayout log4j.appender.console.layout.ConversionPattern = %-d{yyyy-MM-dd HH\:mm\:ss} [%p]-[%c] %m%n ### log file ### log4j.appender.debug = org.apache.log4j.DailyRollingFileAppender log4j.appender.debug.File = ../logs/springmvc-demo.log log4j.appender.debug.Append = true log4j.appender.debug.Threshold = INFO log4j.appender.debug.layout = org.apache.log4j.PatternLayout log4j.appender.debug.layout.ConversionPattern = %-d{yyyy-MM-dd HH\:mm\:ss} [%p]-[%c] %m%n log4j.appender.error = org.apache.log4j.DailyRollingFileAppender log4j.appender.error.File = ../logs/springmvc-demo_error.log log4j.appender.error.Append = true log4j.appender.error.Threshold = ERROR log4j.appender.error.layout = org.apache.log4j.PatternLayout log4j.appender.error.layout.ConversionPattern = %-d{yyyy-MM-dd HH\:mm\:ss} [%p]-[%c] %m%n log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target=System.out log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d{ISO8601} %l %c%n%p\: %m%n log4j.logger.druid.sql=warn,stdout log4j.logger.druid.sql.DataSource=warn,stdout log4j.logger.druid.sql.Connection=warn,stdout log4j.logger.druid.sql.Statement=warn,stdout log4j.logger.druid.sql.ResultSet=warn,stdout
基础操作
package com.yiki.test; import java.util.List; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.Transaction; import com.yiki.bean.Student; import com.yiki.util.Utils; public class testUtil { static Session session = Utils.openSession();; static Transaction tr = session.beginTransaction(); public static void main(String[] args) { queryAll(); } // 查询操作 public static void queryAll() { // 只能出现javabean名字 Query query = session.createQuery("From Student"); @SuppressWarnings("unchecked") List<Student> list = query.list(); for (Student s : list) { System.out.println(s); } } // 获取一条记录 public static void get() { Student student = (Student) session.get(Student.class, 4); System.out.println(student); } public static void update() { Student student = (Student) session.get(Student.class, 4); student.setAddress("测试更新"); session.update(student); tr.commit(); session.close(); } public static void delete() { Student student = (Student) session.get(Student.class, 1); session.delete(student); tr.commit(); session.close(); } // 保存一条记录 public static void save() { Student s = new Student(); s.setAddress("测试工具类"); s.setStuname("测试工具类"); // Session是单线程的 Session session = Utils.openSession(); Transaction tr = session.beginTransaction(); session.save(s); tr.commit(); session.close(); } }