零基础接触hibernate,在学习的过程中接触到了Annotation(翻译过来“注释”)。在学习过程中, 并不知道annotation怎么发展来的,但通过对比操作,发现了Annotation在编码中简化了对映射文件的编写(虽然很大程度上是copy过来的)!!话不多上,直接将编码过程贴上(菜鸟,写不出高大上的东西,此乃无奈之举)!!
创建数据库
创建实体类Teacher.java
%201%20package%20com.hibernate.Exp150704;%202%20%203%20import%20javax.persistence.Entity;%204%20import%20javax.persistence.Id;%205%20%206%20@Entity//Annotation的特别之处,由于注明此类为实体类%207%20public%20class%20Teacher%20{%208%20%20%20%20%20//@Id%20此处亦可放置注释,用于指代主键,但如果get方法为非标准方式定义的,如通过getSid()获取Id%20则可能出现问题!!%209%20%20%20%20%20PRivate%20int%20id;10%20%20%20%20%20private%20String%20name;11%20%20%20%20%20private%20String%20title;12%20%20%20%20%2013%20%20%20%20%20@Id//表示此为获得实体类所对应的数据库的主键%20%20%2014%20%20%20%20%20public%20int%20getId()%20{15%20%20%20%20%20%20%20%20%20return%20id;16%20%20%20%20%20}17%20%20%20%20%20public%20void%20setId(int%20id)%20{18%20%20%20%20%20%20%20%20%20this.id%20=%20id;19%20%20%20%20%20}20%20%20%20%20%20public%20String%20getName()%20{21%20%20%20%20%20%20%20%20%20return%20name;22%20%20%20%20%20}23%20%20%20%20%20public%20void%20setName(String%20name)%20{24%20%20%20%20%20%20%20%20%20this.name%20=%20name;25%20%20%20%20%20}26%20%20%20%20%20public%20String%20getTitle()%20{27%20%20%20%20%20%20%20%20%20return%20title;28%20%20%20%20%20}29%20%20%20%20%20public%20void%20setTitle(String%20title)%20{30%20%20%20%20%20%20%20%20%20this.title%20=%20title;31%20%20%20%20%20}32%20%20%20%20%2033%2034%20}
将实体类添加到配置文件hibernate.cfg.xml中
%201%20<?xml%20version='1.0'%20encoding='utf-8'?>%20%202%20<!DOCTYPE%20hibernate-configuration%20PUBLIC%20%203%20%20%20%20%20%20%20%20%20"-//Hibernate/Hibernate%20Configuration%20DTD%203.0//EN"%20%204%20%20%20%20%20%20%20%20%20"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">%20%205%20<hibernate-configuration>%206%20%20%20<session-factory>%207%20%20%20%20%20<property%20name="connection.driver_class">com.MySQL.jdbc.Driver</property>%208%20%20%20%20%20<property%20name="connection.url">jdbc:mysql://localhost:3306/hibernate</property>%209%20%20%20%20%20<property%20name="connection.username">root</property>10%20%20%20%20%20<property%20name="connection.passWord">TAN19911104</property>11%2012%20%20%20%20%20<property%20name="dialect">org.hibernate.dialect.MySQLDialect</property>13%2014%20%20%20%20%20<property%20name="cache.provider_class">org.hibernate.cache.internal.NoCacheProvider</property>15%2016%20%20%20%20%20<property%20name="show_sql">true</property>17%20%20%20%20%2018%20%20%20%20%20<mapping%20resource="com/hibernate/Exp150702/Student.hbm.xml"/>19%20%20%20%20%20<mapping%20class="com.hibernate.Exp150704.Teacher"/>%20%20/*此处为使用Annotation时,配置文件对映射的定义形式%20%20为class%20=%20"实体类"%20*/20%20%20%20</session-factory>21%20</hibernate-configuration>
测试类%20TestDemo.java
%201%20package%20com.hibernate.Exp150704;%202%20%203%20import%20org.hibernate.Session;%204%20import%20org.hibernate.SessionFactory;%205%20import%20org.hibernate.cfg.AnnotationConfiguration;%206%20import%20org.hibernate.cfg.Configuration;%207%20import%20org.junit.Test;%208%20%209%2010%20public%20class%20TestDemo%20{11%2012%20%20%20%20%20@Test%20%20%20%2013%20%20%20%20%20@SuppressWarnings("deprecation")14%20%20%20%20%20public%20void%20test(){15%20%20%20%20%20%20%20%20%2016%20%20%20%20%20%20%20%20%20Teacher%20t%20=%20new%20Teacher();17%20%20%20%20%20%20%20%20%20t.setId(1);18%20%20%20%20%20%20%20%20%20t.setName("小元");19%20%20%20%20%20%20%20%20%20t.setTitle("proffessional");20%20%20%20%20%20%20%20%20%20//只有AnnotationConfiguration能够获取实体类中使用的Annotation映射21%20%20%20%20%20%20%20%20%20Configuration%20cfg%20=%20new%20AnnotationConfiguration();22%20%20%20%20%20%20%20%20%20SessionFactory%20sf%20=%20cfg.configure().buildSessionFactory();23%20%20%20%20%20%20%20%20%20Session%20session%20=%20sf.openSession();24%20%20%20%20%20%20%20%20%20session.beginTransaction();25%20%20%20%20%20%20%20%20%20session.save(t);26%20%20%20%20%20%20%20%20%20session.getTransaction().commit();27%20%20%20%20%20%20%20%20%20session.close();28%20%20%20%20%20}29%20}
至此,实验结束!!当然在使用Annotation之前,需加入与Annotation相关的jar包!!本人使用了如下jar包!!最后,有错请指出!!菜鸟一枚还需努力!!
新闻热点
疑难解答