Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > связь spring+hibernate


Автор: Adept 14.9.2006, 14:24
Мне надо на jsp страницу вывести список юзеров. Изза моега плохого английского я несовсем вьзжаю.
Вот что у меня сделано:

класс PersonDAO.java
Код

public interface PersonDAO {        
    public abstract Person findById(Integer id);
}


класс PersonDAOImpl.java
Код

public class PersonDAOImpl extends HibernateDaoSupport implements PersonDAO{
    private SessionFactory sessionFactory;
    public Person findById(final Integer id) {
        HibernateTemplate hibernateTemplate =  new HibernateTemplate(this.sessionFactory);
        return (Person) hibernateTemplate.load(Person.class, id);
    }


класс Person.java
Код

public class Person {    
    private Long personId;
    private String surname;
    ......    
   public Long getPersonId() {
       return this.personId;
   }
   
   public void setPersonId(Long personId) {
       this.personId = personId;
   }

   public String getSurname() {
       return this.surname;
   }
   
   public void setSurname(String surname) {
       this.surname = surname;
   }
    .......
}


Person.hbm.xml
Код

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- 
    Mapping file autogenerated by MyEclipse - Hibernate Tools
-->
<hibernate-mapping>
    <class name="hibernate.Person" table="tbPerson" schema="dbo" catalog="WebminDB">
        <id name="personId" type="java.lang.Long">
            <column name="PersonID" precision="18" scale="0" />
            <generator class="assigned" />
        </id>
        <property name="surname" type="java.lang.String">
            <column name="Surname" length="100" not-null="true" />
        </property>
        .....
  </class>
</hibernate-mapping>



класс PersonController.java
Код

public class PersonController extends  AbstractController {
  public ModelAndView handleRequestInternal(
      HttpServletRequest request, HttpServletResponse response) 
      throws Exception {

        List allPerson = PersonDAOImpl.findById();    
    return new ModelAndView("PersonList", "persons", allPerson);
  }
  
 
}



Код

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>


    <bean id="DataSource"
        class="org.apache.commons.dbcp.BasicDataSource">
        <property name="driverClassName">
            <value>com.microsoft.sqlserver.jdbc.SQLServerDriver</value>
        </property>
        <property name="url">
            <value>jdbc:sqlserver://localhost;databaseName=WebminDB</value>
        </property>
        <property name="username">
            <value>sa</value>
        </property>
        <property name="password">
            <value>cbuyfk</value>
        </property>
    </bean>
    <bean id="sessionFactory"
        class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        <property name="dataSource">
            <ref bean="DataSource" />
        </property>
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</prop>
            </props>
        </property>
        <!--  OR mapping files. -->
        <property name="mappingResources">
          <list>
            <value>Person.hbm.xml</value>            
          </list>
        </property>        
    </bean>
    <bean id="hibernateTemplate"
       class="org.springframework.orm.hibernate.HibernateTemplate">
       <property name="sessionFactory">
         <ref bean="sessionFactory"/>
       </property>
    </bean>
    <bean id="PersonDAO" class="hibernate.PersonDAOImpl">
      <property name="hibernateTemplate">
        <ref bean="hibernateTemplate"/>
      </property>
    </bean>
    <bean id="personController" class="PersonController"/>
    <bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
        <property name="mappings">
                    <props>
                        <prop key="/person.htm">personController</prop>
                    </props>
        </property>
    </bean>

    
</beans>

 и вывести на страницу?

Автор: tux 15.9.2006, 02:01
Не понятно, в чем проблема-то? Ты не знаешь как написать в Hibernate запрос получения списка пользователей, как результат запроса вывести в JSP или что-то еще? Поконкретнее пожалуйста.

Автор: Adept 15.9.2006, 12:29
Мне неясно как правильно осуществить доступ к hibernate через HibernateTemplate.
Допустим надо получить список фамилий пользователей.
в классе PersonDAOImpl.java
Код

public List findPersonSurname() {
   return hibernateTemplate.find("select person.surname from Person person");
}

а в классемPersonController.java
Код

public class PersonController extends  AbstractController {
  public ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) 
      throws Exception {
    List allPerson = PersonDAOImpl.findPersonSurName();   ----  [B]тут оно ругается[/B]
    [B]Cannot make a static reference to the non-static method findPersonSurName() from the type 
 PersonDAOImpl[/B]
    return new ModelAndView("PersonList", "person", allPerson);
  } 
}

Что я неправильно делаю? 
и как результаты запроса вывести на jsp страницу?


Автор: tux 15.9.2006, 12:45
Так это ошибка компиляции? У тебя очевидно findPersonSurName() определен в классе PersonDAOImpl как обычный метод, а ты вызываешь его в строке 4 как статический.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)