openjpa实体类中大数据集(oracle clob)的字段处理

比如用户评论(Comment), 评论内容为clob类型, 为了提高数据库读取的效率,实体一般会有2种写法处理

 

1,

@Entity public class Comment { @Id @GeneratedValue private int id; @OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL) private CommentDesc content; private String content1; //摘要,取200-500字 } @Entity public class CommentDesc { @Id @GeneratedValue private int id; @Lob private String desc; }

 

 

2,

@Entity public class Comment { @Id @GeneratedValue private int id; @Lob @Basic(fetch = FetchType.LAZY) private String content; //评论内容 private String content1; //摘要,取200-500字 }

 

这种写法,当查询Comment时,sql:

 

SELECT t0.version, t0.content1
    FROM comment t0
    WHERE t0.id = ?
[params=(int) 8477]

 

只有当需要查询content时(Comment.getContent())才会生成sql:

SELECT t0.content
    FROM comment t0
    WHERE t0.id = ?
[params=(int) 8477]

 

 

相比较而言, 第二种写法比较简单,从缓存的性能上讲,如果content内容经常会修改,那么第一种方法有优势,否则就评论来说,第二种写法比较适合

你可能感兴趣的:(openjpa实体类中大数据集(oracle clob)的字段处理)