[Hibernate]配置文件/初步测试和认识/日志/基础增删查改

简便的说,这个框架用来替代复制的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();

	}

}

猜你喜欢

转载自blog.csdn.net/qq_38277033/article/details/79519764