S2JDBCãEntityã®è¦ªã¯ã©ã¹ã®ããããã£ã¾ã§è¦ãããã«æ¡å¼µ
=== 1/31 è¿½è¨ ===
@MappedSuperclassã§åºæ¥ãããã§ãã
http://s2container.seasar.org/2.4/ja/s2jdbc_entity.html#%E7%B6%99%E6%89%BF
higayasuoããããã³ã¡ã³ãã§æãã¦ããã ãã¾ããããããã¨ããããã¾ããã
ãã¤ãå ã§ã®O/R Mapperã®æè²ãå人çãªéçºã«S2JDBCã使ã£ã¦ãã¾ããã·ã³ãã«ã ããHibernateã§ãã¡ãã¡ã ã£ãè¤æ°ã®1対å¤é¢é£ã®ç´ä»ãããã¾ããã£ã¦ãããã¨æ°ã«å ¥ã£ã¦ããã§ãããã·ã³ãã«ãããã«ç©è¶³ããªããæãããã¨ãã
ä»ã®ã¨ããç©è¶³ããªããªãã¨æãã¦ããã®ã¯ã
- S2JDBCã¯Entityã®è¦ªã¯ã©ã¹ã®ããããã£ãè©ä¾¡ãã¦ãããªãã®ã§ã¸ã§ãã¬ã¼ã·ã§ã³ã»ã®ã£ãããã¿ã¼ã³ãåºæ¥ãªãã
- ãã¼ã¸ã³ã°æ¤ç´¢ãããã¨ãã«ãããæ¤ç´¢æ¡ä»¶ï¼limit, offsetã§æ¤ç´¢ããã®ãã¨ããæ¤ç´¢æ¡ä»¶ãselect count(*) form (â¦)ã§ããã£ã¦ãã¼ã¿ã«ãåå¾ã¨ããã®ãã§ããªããã¤ã¾ããS2Pagerã¿ãããªãã¨ã
2.ã«ã¤ãã¦ã¯ä¿ºãç¥ããªãã ããããã
1.ã¯çµæ§å°ã£ã¦ããã®ã§ä»åèªåã§æ¡å¼µãã¦ã¿ã¾ããã
åããããªè¦æãæã£ã¦ã人ãããã¿ããã
http://ml.seasar.org/archives/seasar-user/2007-December/012363.html
ã¢ããã¼ãã¯ãä¸è¨ã®ãªã³ã¯ã§ã²ããããè¨ã£ã¦ãããã«ãS2JDBCã¨ãã®å¨è¾ºã®ã¯ã©ã¹ã¯æ¡å¼µããããããã«ä½ã£ã¦ããã®ã§ãã¬ã¼ã ã¯ã¼ã¯ã®ã¯ã©ã¹ãç¶æ¿ãã¦æ¡å¼µãã¾ãã
JdbcManagerImplãã辿ã£ã¦ã¯ã©ã¹ãçºãã¦ããããJdbcManagerãEntityMedaDataFactoryãæã£ã¦ãã¦ãããããEntityã®æ å ±ãåå¾ãã¦ããæ§åãããã¤ã®å®è£ ã¯ã©ã¹ã®EntityMedaDataFactoryImplãã¡ã¿ãã¼ã¿ã使ï¼ãã£ãã·ã¥ãã¦ããã®ã§ãããã¤ãç¶æ¿ãããã¨ã«ããã
public class CustomizedEntityMetaFactoryImpl extends EntityMetaFactoryImpl { @Override protected void doCustomize(EntityMeta entityMeta, Class<?> entityClass) { super.doCustomize(entityMeta, entityClass); // ã¨ã³ãã£ãã£ã®ç¶æ¿ããµãã¼ããã doSuperClassPropertyMeta(entityMeta, entityClass); } private void doSuperClassPropertyMeta(EntityMeta entityMeta, Class<?> entityClass) { Class<?> clazz = entityClass.getSuperclass(); while (!clazz.equals(Object.class)) { super.doPropertyMeta(entityMeta, clazz); clazz = clazz.getSuperclass(); } } }
doPropertyMetaã¨ããã¡ã½ããããã£ã¦ãããã§Entityã®ããããã£ããªãã¦ãããããã¤ãoverrideããããã¨ãè¿·ã£ããã ãã©ããdoCustomizeã¨ãã空ã®ã¡ã½ããããã£ãã®ã§ã«ã¹ã¿ãã¤ãºããï¼ã¨ãããã ã¨ç©ºæ°ãèªãã§ãã£ã¡ã«ãããã¹ã¼ãã¼ã¯ã©ã¹ã®ãªãããã¯ãã£ã¨ããæ¹æ³ããã£ããæãã¦ãã ãã< > <
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN" "http://www.seasar.org/dtd/components24.dtd"> <components> <include path="jdbc.dicon"/> <include path="convention.dicon"/> <include path="s2jdbc-internal.dicon"/> <component class="my.s2jdbc.CustomizedEntityMetaFactoryImpl" name="entityMetaFactory" > </component> <component name="jdbcManager" class="org.seasar.extension.jdbc.manager.JdbcManagerImpl"> <property name="maxRows">0</property> <property name="fetchSize">0</property> <property name="queryTimeout">0</property> <property name="dialect">hsqlDialect</property> </component> </components>
s2jdbc.diconããããªæãã«ãs2jdbc-internal.diconã§EntityMetaFactoryImplãæ¢ã«ç»é²ããã¦ããããã²ã¨ã¤ã®interfaceã«å¯¾ãã¦2ã¤ã®å®è£ ã¯ã©ã¹ãç»é²ããã¦ãããã¾ããããªãç¶æ ã«ãªã£ã¦ããã§ããs2jdbc-internal.diconã¨ãããã¾ããããããªããï¼ > < ä¸å¿name屿§ã«ãã解決ãå ã«ãããã¯ããªã®ã§ããã¾ããã£ã¦ããã ã¨æãã
ããã§ãEntityã¯ã©ã¹ã®ç¶æ¿ãå¯è½ã«ï¼ï¼doltengã§ä½æããããã¸ã§ã¯ãã«ã¤ãã¦ãEmpãã¼ãã«ã§è©¦ãã¦ã¿ã¾ããã
public abstract class EmpBase implements Serializable { @Id public Integer id; public Integer empNo; public String empName; public Integer mgrId; @Temporal(TemporalType.DATE) public Date hiredate; public BigDecimal sal; public Integer deptId; @Version public Integer versionNo; } @Entity public class Emp extends EmpBase { private static final long serialVersionUID = -1L; } public class Test extends S2TestCase { JdbcManager jdbcManager_; @Override protected void setUp() throws Exception { include("app.dicon"); super.setUp(); } public void testGap() { List<Emp> emps = jdbcManager_.from(Emp.class) .getResultList(); System.out.println(emps); } }
ãããªæãã§ãã£ãããã¾ããã£ã¦ã¾ããããã£ããï¼