2009年3月

  最近做了个小网站 商品、文章管理和一些小功能等等。 算是第一次正式使用mysql,5.0.27版本的。试用过mysql-front,但是觉得不好用,这里分享一个不错的图形界面工具 Navicat for mysql;
  总结下开发过程中遇到的问题和解决方法。
  1 hibarnate双向一对多的关系配置
    首先是关系  A  (1 : N ) B
   A.hbm.xml配置如下:
     <set name="A" inverse="true" lazy="true"  cascade="all">
        <key column="关联A的数据库字段"></key>
        <one-to-many class="XXX.XXX.XXX.B"/>
        </set>
   B.hbm.xml配置如下:
    <many-to-one name="A"      
       class="XXX.XXX.XXX.A" update="true"  
       cascade="none" column="关联A的数据库字段" />

   这里要把B中关联A的属性映射及定义删掉 否则会报重复XX的错误

   最大的好处是级联更新,简化了开发。

  2 hibernate 配置连接池解决 mysql连接超时的问题
    这次使用了C3P0连接池 和自带的DBCP连接池还是有些不同的,主要是属性方面的
    比如driverClass  和 driverClassName等
    下面是具体配置:
    <bean id="XX"
class="com.mchange.v2.c3p0.ComboPooledDataSource"
                  destroy-method="close">
<property name="driverClass"
value="com.mysql.jdbc.Driver">
</property>
<property name="jdbcUrl"
value="jdbc:mysql://XXX.XXX.XXX:3306/数据库名称?
                   characterEncoding=utf-8">
</property>
<property name="user" value=""></property>
<property name="password" value=""></property>
<property name="minPoolSize" value="5"></property>
<property name="maxPoolSize" value="20"></property>
<property name="maxIdleTime" value="1800"></property>
<property name="maxStatements" value="50"></property>
     </bean>

  3 上传图片路径问题 虚拟主机路径
    第一次租用虚拟主机 平时用到设置servletcontext.getRealPaht()等等也不能用了
    只好用映射过的绝对路径

   4 el 比较字符串  3目运算
     早先写的格式不是很规范 虽然能用但是页面存在警告
     ${requestScope.XX.XX == "" ? "" : ""} 这是不规范的
     <c:choose>
      <c:when test="${requestScope.XX.XX == ''}" ></c:when>
      <c:ohterwise></c:otherwise>
    </c:choose>
    
    5 迭代器问题 这里引用一段文字
      "当使用 fail-fast iterator 对 Collection 或 Map 进行迭代操作过程中尝试直接修改 Collection / Map 的内容时,即使是在单线程下运行, java.util.ConcurrentModificationException 异常也将被抛出。
Iterator 是工作在一个独立的线程中,并且拥有一个 mutex 锁。 Iterator 被创建之后会建立一个指向原来对象的单链索引表,当原来的对象数量发生变化时,这个索引表的内容不会同步改变,所以当索引指针往后移动的时候就找不到要迭代的对象,所以按照 fail-fast 原则 Iterator 会马上抛出 java.util.ConcurrentModificationException 异常。
所以 Iterator 在工作的时候是不允许被迭代的对象被改变的。但你可以使用 Iterator 本身的方法 remove() 来删除对象, Iterator.remove() 方法会在删除当前迭代对象的同时维护索引的一致性。"
     项目里面用了hashtable ,迭代的时候需要把某些数据删除,很自然的用
对象.remove(key),结果报错。
     改成 iter.remove() 一切正常。

   暂时只想到这些 其他的有时间再续

你可能感兴趣的:(Hibernate,xml,mysql,配置管理,项目管理)