今日工作内容:学习hibernate
@Entity //标志是实体类
@Table(name="student")//配置主键
@Id
@GenericGenerator(name="mygenerator" strategy="native")
@GeneratedValue(generator="mygenerator")//主键自动增长可以直接这个,不用加前面一句
@Column(name="id")//类的属性和表的字段相同,可以省略
核心配置文件(hibernate.cfg.xml):
<mapping class="">
HQL查询部分字段,相当于投影查询。
String hql="select name from Student s";
Query query = session.createQuery(hql);
//List<String> list = query.list();
//for(String s : lsit){
// System.out.println(s);
//}
//List<Object[]> list = query.list();
//for(Object[] arr : list){
// System.out.println(arr[0]+arr[1]);
//}
Stirng hql="select new Emp(id,name) from Emp";
String hql="select new Map(id,name) from Emp";
@OneToMany(fetch=FetchType.LAZY,mappedBy="clazz") //延迟加载,懒加载 需要用到关联语句对象的时候,才会去查数据库。按需去抓取数据
@OneToMany(mappedBy="")
@ManyToOne //多对一
@JoinColumn(name="clazzid")//多方设置的外1键
private Clazz clazz //学生表的加的班级属性
private set<Student> students //班级表加的学生属性 set<>只能存储不相同的元素
Set<Student> students=clazz.getStudents();·
级联操作(在保存新的学生信息的情况下把新的班级也插进去了)
多对多的关系
在老师里面包含一个学生的集合
在学生里面包含一个老师的集合
@join{
name="关联表"
joinColumns=@joinColumns(name="");;
inverseJoinColums=@joinColums();
}