hibernate框架初学

所谓框架,我理解的就是导入了一些人家已经编写好的代码,从而简化了一部分冗长代码的编写,使得开发人员能把精力更多的投入到较有意义的代码中,已经接触到的除了MVC的三大框架SSH外还有javascript的jQuery框架。

 

 

今天接触了hibernate框架,它旨在简化java程序与数据库的交互。其核心是JDBC技术和java的映射机制。

 

使用时需要配置实体类与数据库中表格的对应关系(实体类与表格对应,其属性与表格的字段或者说是列名对应)和数据库的相关项。

pojo包中实体类的配置

<?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"> <hibernate-mapping package="hibernate.pojo"><!-- package表示实体类所在的包 --> <class name="User" table="t_user"><!--类名与表名相对应--> <!--name表示类的属性,column表示表格的字段名,两者相对应--> <!--对主键的配置较特殊,要有生成策略--> <id name="id" column="id"> <generator class="native"></generator> </id> <!--对一般属性的配置,当name与column相同时,column可以省略不写--> <property name="name"></property> <property name="pwd" column="pwd"></property> </class> </hibernate-mapping>

src包中对数据库的配置

<?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="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> <property name="hibernate.connection.url">jdbc:mysql:///mydb</property> <property name="hibernate.connection.username">root</property> <property name="hibernate.connection.password">root</property> <!-- 数据库方言 --> <property name="dialect">org.hibernate.dialect.MySQLDialect</property> <!--将类绑定到线程上,+_+暂时不太清楚啥意思???--> <property name="current_session_context_class">thread</property> <!-- sql是否打印 --> <property name="show_sql">true</property> <!-- 数据库连接池 --> <property name="hibernate.c3p0.max_size">6</property> <property name="hibernate.c3p0.min_size">2</property> <property name="hibernate.c3p0.max_statements">100</property> <property name="hibernate.c3p0.idle_test_period">3000</property> <property name="hibernate.c3p0.acquire_increment">2</property> <property name="hibernate.c3p0.validate">false</property> <!-- 实体类映射文件的位置 --> <mapping resource="hibernate/pojo/user.hbm.xml"/> </session-factory> </hibernate-configuration>

 

这样在操作数据库(比如查询)时,hibernate就可以依据对应关系,借助java的映射机制将数据为您自动封装成相应类的对象。这比过去那种先写sql语句查询,后从结果集中取得数据封装为对象的做法确实显得省事。

 

public class Test { public static void main(String[] args) { User u = new User(); u.setName("小哥牛"); u.setPwd("123"); Configuration cfg = new Configuration().configure(); SessionFactory sf = cfg.buildSessionFactory(); Session session = sf.getCurrentSession(); Transaction t = session.beginTransaction(); //添加数据 session.save(u); //del //session.delete(u); //修改 //User target = (User) session.load(User.class, 2); //target.setName("xiaobai"); //session.update(target); //查找 String hql = "from User"; Query query = session.createQuery(hql); List<User> allusers = query.list(); for(User user:allusers){ System.out.println(user.getName()); } t.commit(); } }

 

 

补充:

Configuration是hibernate的入口,

configure()方法是从默认路径查找hibernate.cfg.xml读取的,会将读取到的值将hibernate. properties中的配置覆盖,并通过mapping中的路径找到类与表格的映射文件

 

你可能感兴趣的:(Hibernate,框架,数据库,数据库连接池,user,encoding)