
- •Жизненный цикл сервлета
- •Шаблон Модель-Представление-Контроллер. Роли компонент и зависимости между ними. Пример на одной из Java-реализаций.
- •Задачи mvc
- •Типовая структура Enterprise приложения. Слои, зоны ответственности и зависимости между слоями. Пример (названия классов и методов слоев).
- •Технологии работы с базой данных из Java. Особенности работы с соединениями с базой данных из Web-приложения. Пример.
- •Технология Hibernate
- •Аспектно ориентированное программирование: основные понятия, назначение, пример.
- •Основные концепции
- •Технологии интеграции приложений. Типы интеграции (общий ресурс, удаленный вызов процедур, обмен сообщениями) , сравнение.
- •Типы интеграции
- •Цели интеграции
- •Преимущества веб-интеграции
- •Технологии интеграции приложений. Enterprise Java Beans. Пример Stateless Session Bean.
Технологии работы с базой данных из Java. Особенности работы с соединениями с базой данных из Web-приложения. Пример.
Архитектура – Драйвер -> JDBC API <-клиетское приложение
Типы
Мост
Вызов native – библиотек
Pure java – универсальный протокол
Pure java – проприетарный протокол – в данный момент основной(не зависит от ос и платформы, не требуют доп библиотек)
/* ======== Подключение к MS SQL Server ===== */
// Загрузка драйвера
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
// Соединение с базой данных
Connection connection = DriverManager.getConnection(
"jdbc:sqlserver://localhost:1433;databaseName=o01;“, "sa", "123");
/* ======== Подключение к Oracle ============ */
// Загрузка драйвера
Class.forName("oracle.jdbc.OracleDriver");
// Соединение с базой данных
Connection connection = DriverManager.getConnection(
"jdbc:oracle:thin:@localhost:1521:orcl", "o01", "o01");
// Регистрация драйвера, создание источника данных и шаблона
Class.forName("oracle.jdbc.OracleDriver");
DataSource dataSource = new DriverManagerDataSource("jdbc:oracle:thin:@localhost:1521:orcl", "jdbctest", "jdbctest");
JdbcTemplate template = new JdbcTemplate(dataSource);
// Пример простого скалярного запроса
System.out.printf("Persons: %d\n", template.queryForInt("select count(*) from person"));
// Пример выборки данных в виде списка ассоциативных массивов (имя колонки - значение)
List<Map<String, Object>> rows = template.queryForList("select * from person");
for (Map<String, Object> row : rows) {
for (Map.Entry<String, Object> entry : row.entrySet()) {
System.out.printf("%s: %s\n", entry.getKey(), entry.getValue());
}
System.out.println();
}
// Пример выборки списка объектов
List<Person> persons = template.query("select * from person", new PersonMapper());
for (Person person : persons) {
System.out.printf("Id: %d, Name: %s\n", person.getId(), person.getName());
}
public class QuerySample {
public static void main(String[] args) throws Exception {
// Загрузка драйвера
Class.forName("oracle.jdbc.OracleDriver");
// Соединение с базой данных
Connection connection = DriverManager.getConnection(
"jdbc:oracle:thin:@localhost:1521:orcl", // localhost - сервер СУБД, orcl - SID базы оракла
"o01", "o01"); // пользователь, пароль
// Объявление переменных, чтобы они были доступны в блоке finally.
ResultSet rs = null;
PreparedStatement stmt = null;
try {
// Создание Statement
stmt = connection.prepareStatement("select ID, NAME from PERSON where NAME like ?");
stmt.setString(1, "%m%");
// Выполнение запроса
rs = stmt.executeQuery();
// Перебор результата выполнения запроса
while (rs.next()) {
// Пример выбора параметра по номеру или по имени
System.out.println("ID: " +
rs.getLong(1) + "; NAME=" +
rs.getString("NAME"));
}
} finally {
// закрытие использованных ресурсов БД
if (rs != null) {
rs.close();
}
if (stmt != null) {
stmt.close();
}
connection.close();
}
}
}