Топ контрибуторов
loading
loading
Знаете ли Вы, что

В разделе "Статьи" можно найти обучающие статьи по информационным технологиям, а также узнать о новостях сервиса Quizful.

Лента обновлений
ссылка Oct 22 23:24
Комментарий от alexcei88:
В вопросе переменная s даже не выводиться, а выводитьс...
ссылка Oct 22 17:46
Комментарий от AlexFurm:
Это UB, так можно вызывать только статические функции ч...
ссылка Oct 22 17:43
Комментарий от AlexFurm:
Любые битовые операции с signed это UB
ссылка Oct 21 20:30
Комментарий от yoori:
Любой вариант скомпилируется если компилировать не в конеч...
ссылка Oct 21 16:53
Добавлен вопрос в тест QA (Quality Assurance)
Статистика

Тестов: 153, вопросов: 8596. Пройдено: 443367 / 2177507.

Пример EJB приложения в Eclipse (продолжение)

head tail Статья
категория
Java EE
дата31.08.2009
авторfever-007
голосов8

Данная статья является продолжением статьи Пример создания EJB3 приложения с помощью Eclipse

Нам понадобится: предустановленная JVM (1.6), JBoss (5.1), Eclipse (3.4.2), MySQL 5.1 – предполагается, что вы уже знаете как ими правильно пользоваться. В конце статьи есть ссылка для скачивания исходных кодов проекта.

Для начала создадим таблицу в базе:


create table Person(
   id integer primary key not null,
   name CHAR(15),
); 

В ejb-module создадим Bean класс Person – отображение нашей реляционной базы на объекты Java (plain Java object), который как минимум должен иметь конструктор без аргументов, а также методы getter и setter, если они необходимы.


import javax.persistence.*; 
@Entity
public class Person implements java.io.Serializable {
  @Id
  private Integer id;
  private String name; 

  public Integer getId() { return id; } 
  public void setId(Integer id) { this.id = id;  } 

  public String getName() { return name; } 
  public void setName(String name) { this.name = name; }
} 

Для тех, кто знаком с ORM Hibernate это все будет очень знакомо. Аннотация Entity указывает, что класс маппится на нашу таблицу Person, @Id отмечает поле в нашем классе, которое используется в качестве первичного ключа. Остальные поля автоматически подхватятся и не нужно писать аннотации, всё это в том случае, если названия таблиц и полей совпадают. Если нет, то пишем так:


@Entity
@Table(name="название таблицы в БД") 
@Id
@Column(name="название первичного ключа в БД") 

В папке jboss\server\default\deploy\mysql-ds.xml создадим DataSource.


<?xml version="1.0" encoding="UTF-8" ?>
<datasources>
  <local-tx-datasource>
    <jndi-name>PersonDB</jndi-name>
    <connection-url>jdbc:mysql://localhost:3306/persons</connection-url>
    <driver-class>com.mysql.jdbc.Driver</driver-class>
    <user-name>имя пользователя </user-name>
    <password>пароль пользователя</password>
    <exception-sorter-class-name>
        org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter
    </exception-sorter-class-name>
  </local-tx-datasource>
</datasources>

И не забудьте драйвер для MySQL положить сюда: C:\jboss\server\default\lib

Теперь можно создать файл persistence.xml, он должен быть в YourEJBProject/META-INF/persistence.xml


<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://java.sun.com/xml/ns/persistence 
            http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
      <persistence-unit name="persons_dates">
            <jta-data-source>java:/PersonDB</jta-data-source>
      </persistence-unit>
</persistence> 

Исправим классы HelloWorldBean и HelloWorldLocal из первой части статьи, код приводится частично, т.к. вы уже знаете как надо писать.


public class HelloWorldBean implements HelloWorldLocal {
  @PersistenceContext (unitName="persons_dates")
  private EntityManager manager; 

  // метод создаст в таблице персону
  public void createPerson(Person person) {
    manager.persist(person);
  } 

  // изменение имени нашей персоны в таблице 
  public Person updatePerson(Person person) {
    manager.merge(person);
  } 

  // удаление персоны из таблицы
  public void deletePerson(int id) {
    Person person = manager.find(Person.class, id);
    manager.remove(person); 
  } 
}

Теперь нужно написать сервлет:


package servlets;
import java.io.IOException;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.ejb.*;
import lesson.*;
public class TestClient extends HttpServlet implements javax.servlet.Servlet {
	@EJB
	private HelloWorldLocal hello;

	protected void doPost(HttpServletRequest request, 
                        HttpServletResponse response) throws ServletException, IOException {
		try {
			Person person = new Person();
			person.setName(request.getParameter("name"));
			Person personName = hello.createPerson(person);
			request.getSession().setAttribute("result", personName.getName());
			RequestDispatcher rd = request.getRequestDispatcher("index.jsp");
			rd.forward(request, response);
		} catch (Exception e) {
			throw new ServletException(e.getMessage());
		}
	}
}

Здесь реализован только метод создания записи в таблице. Остальные методы остаются для самостоятельного изучения.

Ссылка для скачивания архива проекта

Если Вам понравилась статья, проголосуйте за нее

Голосов: 8  loading...
bu_ma_ga   arbasis   Swora   evg299   san   musclexboy   irinarinka   Dmi3