hibernate_annotation字段映射位置

   @Id
    private int id;
    private String name;
    private String wifeName;
    private Date birthDate;
    //Title是Enum(枚举)类型
    private Title  title;
 ***********************************   

    @Id
    public int getId() {
        return id;
    }

在hibernate里,映射@Id可以放在成员变量上,完全可以。

实际工作中,有人放在成员变量上,看起来更集中,更清晰。但是这样放,已经破坏了java的面向对象的的封装性。因为平时我们写javaBean时,属性field都是private的,私有的。

如果在私有的上写上注解,这时相当于hibernate可以直接访问你的私有的成员变量,java的反射机制就能够做到。但是从设计的角度绝不推荐这样干,因为本身我们把他设成私有的就是不希望别人直接就伸进我们兜里来拿我们这些私有的东西。比如,本来你把你家的存折放进你兜里,加了把锁,结果hibernate二话不说直接把手伸进你兜里把存折拿出来了,不合适,所以应该建议把注解写在get方法上。不应该直接去访问private变量,更别提hibernate直接去修改你的私有变量。这样就更不爽了。直接二话不说,把你存折原来有10000,直接给你改成1块。

而且要保持属性名和set、get方法一致。

时间: 2024-10-16 23:51:29

hibernate_annotation字段映射位置的相关文章

字段映射

字段映射 1.为什么需要字段映射 在实际项目开发中,如果想实现数据的添加等操作,必须有一个前提:表单数据中的表单名称必须与数据表的字段名称一致,否则在创建数据对象时,会导致数据插入异常,而且这样也容易暴露数据表的字段信息. 部门表分析:Dept控制器,表名可能是:前缀_dept 分析表单:部门名称对应name ???????? 上级部门对应pid ???????? 排序对应sort 备注对应remark 2.字段映射 ThinkPHP的字段映射功能可以让你在表单中隐藏真正的数据表字段,而不用担心

Model Builder中Table2Table中字段映射的问题

ArcGIS10中使用过程中,Bug不少.尽管有了SP3,但模型耦合的深层次的应用中还是错误不少.目前只是遇到一个,利用躲避的方法解决一个.例如,从NetCDF中抽出的数据表,必须在内存和数据库中都存在的条件下,Python程序才能运行成功,花了许多时间才得出这样的躲避方法.如下图的抽取计算数据为例,抽出NetCDF的数据表为内存视图,将该内存视图转存为Geodatabase的存储数据表,在没有表映射的条件下总是无法输出字段. 这里实际上可能是ArcGIS10的Bug.如果在制作过程中有具体数据

SqlBulkCopy excel 字段映射解决办法二 使用数字索引代替 字段名称 做映射 避免字段中有中文 大小写等情况

多线程的SqlBulkCopy批量导入.事务和SqlBulkCopy使用的数据集中自定义映射字段的注意事项 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68

MySql数据库在表中添加新字段,设置主键,设置外键,字段移动位置,以及修改数据库后如何进行部署和维护的总结

1,为当前已有的表添加新的字段 alter table student add studentName varchar(20) not null; 2,为当前已有的表中的字段设置为主键自增 alter table student add constraint PK_studentId primaryKey(studentId); 3,为当前已有的表中的字段设置为外键 alter table student add constraint FK_teacherId_studentInfo forei

对于Oracle中Number类型的字段映射成Java中的具体类型的问题

我在Oracle中给一个用户Id字段设置为Number类型,使用JDBC在完成ORM的时候,以为其可以自动转换为Integer,因为我的POJO类id舒心实用的就是Integer.但事实是,我在测试的时候,发现所有的用户id全为null,还在奇怪明明数据库中id是有值的,为什么取不到? 原因在于Oracle的Number类型映射为Java类型中的 java.math.BigDecimal (不可变的.任意精度的有符号十进制数)类型,并不是我简单认为的 Integer ,还会报一个错误: 就是说B

mysql 修改字段排列位置

修改字段排列位置 ALTER TABLE 表名 MODIFY 字段名1 数据类型 FIRST|AFTER 字段名2 参数说明 FIRST,可选参数 将字段1,修改为表的第一个字段. AFTER 字段名2 将字段1,插入到字段2的后面. 将数据表grade的username字段,修改未表的第一个字段 将数据表grade的id字段,插入到grade字段后面

spring data jpa自定义bean字段映射

当遇到复杂多表查询时,并且同时还需要确保查询性能,此时则需要使用自定义sql查询,然而spring data jpa对于自定义sql则需使用查询需要在对应的bean中做太多的配置映射,我尝试了一下,最终还是没成功.故选择了另一种方式来解决. String sql = "select a.name,b.className,a.createTime from A a left join B b on a.id = b.id"; Query query = entityManager.cre

ThinkPhP中model字段映射 $_map

1 <?php 2 class UserModel extends RelationModel{ 3 /**将表单中的name映射到该表中的username**/ 4 protected $_map = array( 5 'name' => 'username', 6 ); 7 /*所以在表单提交时不需要改变表单中的'name'名称 8 *当要读出'name'的值时,表中存在的是username,所以,需要用函数转化 9 *$data = $User->parseFieldsMap($d

MyBatis处理一行数据-MyBatis使用sum语句报错-MyBatis字段映射-遁地龙卷风

(-1)写在前面 我用的是MyBatis 3.2.4 (0) 编程轶事 select sum(value) ,sum(value2)  from integral_list where  MemberId = #{0} and operate = 1 and  Year(AddTime) = #{1} and ChannelType = #{2} and ChannelCode = #{3} 我用的sqlyoug显示的的字段名分别是sum(value) .sum(value2) 我在xml文件中