SlideShare une entreprise Scribd logo
1  sur  38
Driver driver = (Driver) Class.forName("com.mysql.jdbc.Driver").newInstance();
DriverManager.registerDriver(driver);
StringBuilder url = new StringBuilder();
url.
append("jdbc:mysql://"). //db type
append("localhost:"). //host name
append("3306/"). //port
append("lecture_db?"). //db name
append("user=tully&"). //login
append("password=tully"); //password
// URL: “jdbc:mysql://localhost:3306/lecture_db?user=tully&password=tully”
Connection connection = DriverManager.getConnection(url.toString());
public interface ResultHandler {
void handle(ResultSet result) throws SQLException;
}
public static int execUpdate(Connection connection, String update) {
Statement stmt = connection.createStatement();
stmt.execute(update);
int updated = stmt.getUpdateCount();
stmt.close();
return updated;
}
execUpdate(connection, "create table users (id bigint auto_increment, name
varchar(256), primary key (id))");
execUpdate(connection, "insert into users (name) values ('tully')");
public interface ResultHandler {
void handle(ResultSet result) throws SQLException;
}
private static void execQuery(Connection connection,
String query,
ResultHandler handler){
Statement stmt = connection.createStatement();
stmt.execute(query);
ResultSet result = stmt.getResultSet();
handler.handle(result);
result.close();
stmt.close();
}
String query = “select * from users where name = ‘tully’”;
execQuery(connection, query, new ResultHandler(){
public void handle(ResultSet result) throws SQLException {
result.next();
System.out.append("User: " + result.getString("name") + 'n');
}
});
public void execUpdate(Connection connection, String[] updates) {
try {
connection.setAutoCommit(false);
for(String update: updates){
Statement stmt = connection.createStatement();
stmt.execute(update);
stmt.close();
}
connection.commit();
} catch (SQLException e) {
try {
connection.rollback();
connection.setAutoCommit(true);
} catch (SQLException ignore) {}
}
}
public void execUpdate(Connection connection, Map<Integer, String> idToName) {
try{
String update = "insert into users(id, user_name) values(?, ?)";
PreparedStatement stmt = connection.prepareStatement(update);
for(Integer id: idToName.keySet()){
stmt.setInt(1, id);
stmt.setString(2, idToName.get(id));
stmt.executeUpdate();
}
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
public interface TResultHandler<T> {
T handle(ResultSet resultSet) throws SQLException;
}
public class TExecutor {
public <T> T execQuery(Connection connection,
String query,
TResultHandler<T> handler) throws SQLException {
Statement stmt = connection.createStatement();
stmt.execute(query);
ResultSet result = stmt.getResultSet();
T value = handler.handle(result);
result.close();
stmt.close();
return value;
}
}
TExecutor execT = new TExecutor();
String query = “select user_name from users where id=1”;
String name = execT.execQuery(
connection,
query,
new TResultHandler<String>(){
public String handle(ResultSet result) throws SQLException {
result.next();
return result.getString("user_name");
}
});
System.out.append("User: " + name + 'n');
―
public class UsersDataSet {
private long id;
private String name;
public UsersDataSet(long id, String name){ this.id = id; this.name = name; }
public UsersDataSet(String name){ this.id = -1; this.name = name; }
public String getName() {
return name;
}
public long getId() {
return id;
}
}
public interface UsersDAO {
UsersDataSet get(long id) throws SQLException;
UsersDataSet getByName(String name) throws SQLException;
void add(UsersDataSet dataSet) throws SQLException;
void delete(long id) throws SQLException;
}
―
―
―
―
―
―
―
―
―
public UsersDAO(Connection connection){…}
―
―
38. JDBC API.
39. class Connection из JDBC API. Задачи которые решает Connection.
40. Dependency Injection. Использование при работе с базами данных.
41. class Statement из JDBC API. Задачи которые решает Statement.
42. class ResultSet из JDBC API. Обработка ответа от базы.
43. DataSet (элемент ORM).
44. DAO (элемент ORM).
1. История и особенности языка Java.
2. Платформа Java. Java Editions. GC, JVM, JDK, JRE. ByteCode.
3. Правила наименований. Запуск java приложений.
4. class Object и class Class<?>.
5. Простые типы в Java. Классы обертки простых типов.
6. Generic programming в Java.
7. Коллекции в Java. Iterator, Iterable.
8. Processes and Threads.
9. Interface Runnable. class Thread. Методы start() и run().
10. Методы класса Thread: sleep(), interrupt(), join().
11. Ключевые слова volatile и synchronized.
12. Atomic variables.
13. Проблемы многопоточного доступа к данным. Race condition.
14. Методы класса Object: wait(), notify() и notifyAll().
15. Плюсы и минусы многопоточных приложений.
16. Способы взаимодействия потоков.
17. java.util.concurrent
18. MessageSystem. Address и Abonent.
19. Распределение классов по пакетам. Циклические зависимости.
20. Архитектура игрового сервера.
21. Процесс работы игрового сервера, репликация.
22. Виды тестирования.
23. GC. Виды GC. Параметры GC.
24. Работа со случайными числами.
25. Singleton и Context.
26. Events, подписка на события.
27. Exception и Throwable.
28. Передача функции в библиотеку. Callback.
29. Анонимные классы.
30. Работа со временем и датой. Unix time. Locale.
31. I/O Streams. Потоки байт и потоки символов.
32. Сериализация/десериализация. Interface Serializable.
33. Ключевое слово transient.
34. Reflection. Роль reflection в сериализации.
35. SAX парсер.
36. DOM парсер.
37. ResourceFactory. Роль ресурсов в игре.
38. JDBC API.
39. class Connection.
40. Statement.
41. ResultSet.
42. DataSet.
43. DAO.
44. Annotation.
45. Object Relational Mapping.
46. Frontend.
47. MessageSystem иерархия наследования.
48. Game Mechanics.
49. Resource System.
50. Database System.
Java весна 2013 лекция 8

Contenu connexe

Tendances

вебинар - функциональное тестирование с использованием Selenium 2 и TestNG
вебинар - функциональное тестирование с использованием Selenium 2 и TestNGвебинар - функциональное тестирование с использованием Selenium 2 и TestNG
вебинар - функциональное тестирование с использованием Selenium 2 и TestNG
Andrey Rebrov
 
Внутреннее устройство и оптимизация бандла webpack
Внутреннее устройство и оптимизация бандла webpackВнутреннее устройство и оптимизация бандла webpack
Внутреннее устройство и оптимизация бандла webpack
Alexey Ivanov
 
использование Hibernate java persistence.part 4.
использование Hibernate java persistence.part 4.использование Hibernate java persistence.part 4.
использование Hibernate java persistence.part 4.
Asya Dudnik
 
Как не утонуть в мегабайтах JS-кода
Как не утонуть в мегабайтах JS-кодаКак не утонуть в мегабайтах JS-кода
Как не утонуть в мегабайтах JS-кода
tfmailru
 
CSS-в-JS, HTML-в-JS, ВСЁ-в-JS. Все гораздо проще, когда всё вокруг JavaScript
CSS-в-JS, HTML-в-JS, ВСЁ-в-JS. Все гораздо проще, когда всё вокруг JavaScriptCSS-в-JS, HTML-в-JS, ВСЁ-в-JS. Все гораздо проще, когда всё вокруг JavaScript
CSS-в-JS, HTML-в-JS, ВСЁ-в-JS. Все гораздо проще, когда всё вокруг JavaScript
Alexey Ivanov
 
Making Scalable JavaScript Application
Making Scalable JavaScript ApplicationMaking Scalable JavaScript Application
Making Scalable JavaScript Application
Mikhail Davydov
 
Хранение, обработка и отдача статики с использованием \Zend\File. Опыт социал...
Хранение, обработка и отдача статики с использованием \Zend\File. Опыт социал...Хранение, обработка и отдача статики с использованием \Zend\File. Опыт социал...
Хранение, обработка и отдача статики с использованием \Zend\File. Опыт социал...
zfconfua
 
Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mai...
Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mai...Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mai...
Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mai...
tfmailru
 

Tendances (20)

JDBC
JDBCJDBC
JDBC
 
Cookies, session и другое в JSP
Cookies, session и другое в JSPCookies, session и другое в JSP
Cookies, session и другое в JSP
 
вебинар - функциональное тестирование с использованием Selenium 2 и TestNG
вебинар - функциональное тестирование с использованием Selenium 2 и TestNGвебинар - функциональное тестирование с использованием Selenium 2 и TestNG
вебинар - функциональное тестирование с использованием Selenium 2 и TestNG
 
QA Fest 2015. Иван Пашко. XPath yourself. Tips & Tricks
QA Fest 2015. Иван Пашко. XPath yourself. Tips & TricksQA Fest 2015. Иван Пашко. XPath yourself. Tips & Tricks
QA Fest 2015. Иван Пашко. XPath yourself. Tips & Tricks
 
Основы Java. 5. Databases
Основы Java. 5. DatabasesОсновы Java. 5. Databases
Основы Java. 5. Databases
 
JSP
JSPJSP
JSP
 
Внутреннее устройство и оптимизация бандла webpack
Внутреннее устройство и оптимизация бандла webpackВнутреннее устройство и оптимизация бандла webpack
Внутреннее устройство и оптимизация бандла webpack
 
PGDBObject
PGDBObjectPGDBObject
PGDBObject
 
использование Hibernate java persistence.part 4.
использование Hibernate java persistence.part 4.использование Hibernate java persistence.part 4.
использование Hibernate java persistence.part 4.
 
Распределенные системы в Одноклассниках
Распределенные системы в ОдноклассникахРаспределенные системы в Одноклассниках
Распределенные системы в Одноклассниках
 
Введение в Spring
Введение в SpringВведение в Spring
Введение в Spring
 
Алексей Андросов "Яндекс.Почта: архитектура фронтенда как она есть"
Алексей Андросов "Яндекс.Почта: архитектура фронтенда как она есть"Алексей Андросов "Яндекс.Почта: архитектура фронтенда как она есть"
Алексей Андросов "Яндекс.Почта: архитектура фронтенда как она есть"
 
Как не утонуть в мегабайтах JS-кода
Как не утонуть в мегабайтах JS-кодаКак не утонуть в мегабайтах JS-кода
Как не утонуть в мегабайтах JS-кода
 
Влад Ковташ — Yap Database
Влад Ковташ — Yap DatabaseВлад Ковташ — Yap Database
Влад Ковташ — Yap Database
 
CSS-в-JS, HTML-в-JS, ВСЁ-в-JS. Все гораздо проще, когда всё вокруг JavaScript
CSS-в-JS, HTML-в-JS, ВСЁ-в-JS. Все гораздо проще, когда всё вокруг JavaScriptCSS-в-JS, HTML-в-JS, ВСЁ-в-JS. Все гораздо проще, когда всё вокруг JavaScript
CSS-в-JS, HTML-в-JS, ВСЁ-в-JS. Все гораздо проще, когда всё вокруг JavaScript
 
Making Scalable JavaScript Application
Making Scalable JavaScript ApplicationMaking Scalable JavaScript Application
Making Scalable JavaScript Application
 
Хранение, обработка и отдача статики с использованием \Zend\File. Опыт социал...
Хранение, обработка и отдача статики с использованием \Zend\File. Опыт социал...Хранение, обработка и отдача статики с использованием \Zend\File. Опыт социал...
Хранение, обработка и отдача статики с использованием \Zend\File. Опыт социал...
 
Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mai...
Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mai...Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mai...
Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mai...
 
JavaScript Базовый. Занятие 07.
JavaScript Базовый. Занятие 07.JavaScript Базовый. Занятие 07.
JavaScript Базовый. Занятие 07.
 
Java threads - part 2
Java threads - part 2Java threads - part 2
Java threads - part 2
 

En vedette

Java весна 2013 лекция 7
Java весна 2013 лекция 7Java весна 2013 лекция 7
Java весна 2013 лекция 7
Technopark
 
Бизнес и системный анализ весна 2013 лекция 1
Бизнес и системный анализ весна 2013 лекция 1Бизнес и системный анализ весна 2013 лекция 1
Бизнес и системный анализ весна 2013 лекция 1
Technopark
 
Java весна 2013 лекция 6
Java весна 2013 лекция 6Java весна 2013 лекция 6
Java весна 2013 лекция 6
Technopark
 
Java осень 2012 лекция 4
Java осень 2012 лекция 4Java осень 2012 лекция 4
Java осень 2012 лекция 4
Technopark
 
Java осень 2012 лекция 6
Java осень 2012 лекция 6Java осень 2012 лекция 6
Java осень 2012 лекция 6
Technopark
 
C++ осень 2012 лекция 8
C++ осень 2012 лекция 8C++ осень 2012 лекция 8
C++ осень 2012 лекция 8
Technopark
 
Java осень 2012 лекция 3
Java осень 2012 лекция 3Java осень 2012 лекция 3
Java осень 2012 лекция 3
Technopark
 
Web весна 2012 лекция 7
Web весна 2012 лекция 7Web весна 2012 лекция 7
Web весна 2012 лекция 7
Technopark
 

En vedette (8)

Java весна 2013 лекция 7
Java весна 2013 лекция 7Java весна 2013 лекция 7
Java весна 2013 лекция 7
 
Бизнес и системный анализ весна 2013 лекция 1
Бизнес и системный анализ весна 2013 лекция 1Бизнес и системный анализ весна 2013 лекция 1
Бизнес и системный анализ весна 2013 лекция 1
 
Java весна 2013 лекция 6
Java весна 2013 лекция 6Java весна 2013 лекция 6
Java весна 2013 лекция 6
 
Java осень 2012 лекция 4
Java осень 2012 лекция 4Java осень 2012 лекция 4
Java осень 2012 лекция 4
 
Java осень 2012 лекция 6
Java осень 2012 лекция 6Java осень 2012 лекция 6
Java осень 2012 лекция 6
 
C++ осень 2012 лекция 8
C++ осень 2012 лекция 8C++ осень 2012 лекция 8
C++ осень 2012 лекция 8
 
Java осень 2012 лекция 3
Java осень 2012 лекция 3Java осень 2012 лекция 3
Java осень 2012 лекция 3
 
Web весна 2012 лекция 7
Web весна 2012 лекция 7Web весна 2012 лекция 7
Web весна 2012 лекция 7
 

Similaire à Java весна 2013 лекция 8

Java осень 2013 лекция 8
Java осень 2013 лекция 8Java осень 2013 лекция 8
Java осень 2013 лекция 8
Technopark
 
Java осень 2012 лекция 8
Java осень 2012 лекция 8Java осень 2012 лекция 8
Java осень 2012 лекция 8
Technopark
 
Java весна 2013 лекция 9
Java весна 2013 лекция 9Java весна 2013 лекция 9
Java весна 2013 лекция 9
Technopark
 
Android - 01 - Java Basics
Android - 01 - Java BasicsAndroid - 01 - Java Basics
Android - 01 - Java Basics
Noveo
 
Web осень 2013 лекция 6
Web осень 2013 лекция 6Web осень 2013 лекция 6
Web осень 2013 лекция 6
Technopark
 

Similaire à Java весна 2013 лекция 8 (20)

Java осень 2013 лекция 8
Java осень 2013 лекция 8Java осень 2013 лекция 8
Java осень 2013 лекция 8
 
Java осень 2012 лекция 8
Java осень 2012 лекция 8Java осень 2012 лекция 8
Java осень 2012 лекция 8
 
Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...
Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...
Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...
 
C++ STL & Qt. Занятие 05.
C++ STL & Qt. Занятие 05.C++ STL & Qt. Занятие 05.
C++ STL & Qt. Занятие 05.
 
Database (Lecture 14 – database)
Database (Lecture 14 – database)Database (Lecture 14 – database)
Database (Lecture 14 – database)
 
Работа с БД в Java
Работа с БД в JavaРабота с БД в Java
Работа с БД в Java
 
Инструментация среды исполнения в арсенале тестировщика
Инструментация среды исполнения в арсенале тестировщикаИнструментация среды исполнения в арсенале тестировщика
Инструментация среды исполнения в арсенале тестировщика
 
Михаил Давыдов "Масштабируемые JavaScript-приложения"
Михаил Давыдов "Масштабируемые JavaScript-приложения"Михаил Давыдов "Масштабируемые JavaScript-приложения"
Михаил Давыдов "Масштабируемые JavaScript-приложения"
 
Java весна 2013 лекция 9
Java весна 2013 лекция 9Java весна 2013 лекция 9
Java весна 2013 лекция 9
 
Документирование исходных текстов (javadoc)
Документирование исходных текстов (javadoc)Документирование исходных текстов (javadoc)
Документирование исходных текстов (javadoc)
 
Lec 13
Lec 13Lec 13
Lec 13
 
C# Desktop. Занятие 12.
C# Desktop. Занятие 12.C# Desktop. Занятие 12.
C# Desktop. Занятие 12.
 
Взломать Web-сайт на ASP.NET? Сложно, но можно!
Взломать Web-сайт на ASP.NET? Сложно, но можно!Взломать Web-сайт на ASP.NET? Сложно, но можно!
Взломать Web-сайт на ASP.NET? Сложно, но можно!
 
Industrial Programming Java - Lection Pack 03 - Relational Databases - Lavren...
Industrial Programming Java - Lection Pack 03 - Relational Databases - Lavren...Industrial Programming Java - Lection Pack 03 - Relational Databases - Lavren...
Industrial Programming Java - Lection Pack 03 - Relational Databases - Lavren...
 
C# Web. Занятие 04.
C# Web. Занятие 04.C# Web. Занятие 04.
C# Web. Занятие 04.
 
Android - 01 - Java Basics
Android - 01 - Java BasicsAndroid - 01 - Java Basics
Android - 01 - Java Basics
 
Расширение библиотеки Slick
Расширение библиотеки SlickРасширение библиотеки Slick
Расширение библиотеки Slick
 
.NET Fest 2018. Сергей Калинец. Azure веб разработка здорового человека
.NET Fest 2018. Сергей Калинец. Azure веб разработка здорового человека.NET Fest 2018. Сергей Калинец. Azure веб разработка здорового человека
.NET Fest 2018. Сергей Калинец. Azure веб разработка здорового человека
 
Web осень 2013 лекция 6
Web осень 2013 лекция 6Web осень 2013 лекция 6
Web осень 2013 лекция 6
 
The Old New ASP.NET
The Old New ASP.NETThe Old New ASP.NET
The Old New ASP.NET
 

Plus de Technopark

СУБД 2013 Лекция №8 "Конфигурирование базы данных"
СУБД 2013 Лекция №8 "Конфигурирование базы данных"СУБД 2013 Лекция №8 "Конфигурирование базы данных"
СУБД 2013 Лекция №8 "Конфигурирование базы данных"
Technopark
 
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
Technopark
 
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
Technopark
 

Plus de Technopark (20)

Лекция 11. Вычислительная модель Pregel
Лекция 11. Вычислительная модель PregelЛекция 11. Вычислительная модель Pregel
Лекция 11. Вычислительная модель Pregel
 
Лекция 14. Hadoop в Поиске Mail.Ru
Лекция 14. Hadoop в Поиске Mail.RuЛекция 14. Hadoop в Поиске Mail.Ru
Лекция 14. Hadoop в Поиске Mail.Ru
 
Лекция 13. YARN
Лекция 13. YARNЛекция 13. YARN
Лекция 13. YARN
 
Лекция 12. Spark
Лекция 12. SparkЛекция 12. Spark
Лекция 12. Spark
 
Лекция 10. Apache Mahout
Лекция 10. Apache MahoutЛекция 10. Apache Mahout
Лекция 10. Apache Mahout
 
Лекция 9. ZooKeeper
Лекция 9. ZooKeeperЛекция 9. ZooKeeper
Лекция 9. ZooKeeper
 
Лекция 7. Введение в Pig и Hive
Лекция 7. Введение в Pig и HiveЛекция 7. Введение в Pig и Hive
Лекция 7. Введение в Pig и Hive
 
Лекция 6. MapReduce в Hadoop (графы)
Лекция 6. MapReduce в Hadoop (графы)Лекция 6. MapReduce в Hadoop (графы)
Лекция 6. MapReduce в Hadoop (графы)
 
Лекция 5. MapReduce в Hadoop (алгоритмы)
Лекция 5. MapReduce в Hadoop (алгоритмы)Лекция 5. MapReduce в Hadoop (алгоритмы)
Лекция 5. MapReduce в Hadoop (алгоритмы)
 
Лекция 4. MapReduce в Hadoop (введение)
Лекция 4. MapReduce в Hadoop (введение)Лекция 4. MapReduce в Hadoop (введение)
Лекция 4. MapReduce в Hadoop (введение)
 
Лекция 3. Распределённая файловая система HDFS
Лекция 3. Распределённая файловая система HDFSЛекция 3. Распределённая файловая система HDFS
Лекция 3. Распределённая файловая система HDFS
 
Лекция 2. Основы Hadoop
Лекция 2. Основы HadoopЛекция 2. Основы Hadoop
Лекция 2. Основы Hadoop
 
Лекция 1. Введение в Big Data и MapReduce
Лекция 1. Введение в Big Data и MapReduceЛекция 1. Введение в Big Data и MapReduce
Лекция 1. Введение в Big Data и MapReduce
 
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
 
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
 
СУБД 2013 Лекция №9 "Безопасность баз данных"
СУБД 2013 Лекция №9 "Безопасность баз данных"СУБД 2013 Лекция №9 "Безопасность баз данных"
СУБД 2013 Лекция №9 "Безопасность баз данных"
 
СУБД 2013 Лекция №8 "Конфигурирование базы данных"
СУБД 2013 Лекция №8 "Конфигурирование базы данных"СУБД 2013 Лекция №8 "Конфигурирование базы данных"
СУБД 2013 Лекция №8 "Конфигурирование базы данных"
 
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
 
СУБД 2013 Лекция №5 "Определение узких мест"
СУБД 2013 Лекция №5 "Определение узких мест"СУБД 2013 Лекция №5 "Определение узких мест"
СУБД 2013 Лекция №5 "Определение узких мест"
 
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
 

Java весна 2013 лекция 8

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10. Driver driver = (Driver) Class.forName("com.mysql.jdbc.Driver").newInstance(); DriverManager.registerDriver(driver); StringBuilder url = new StringBuilder(); url. append("jdbc:mysql://"). //db type append("localhost:"). //host name append("3306/"). //port append("lecture_db?"). //db name append("user=tully&"). //login append("password=tully"); //password // URL: “jdbc:mysql://localhost:3306/lecture_db?user=tully&password=tully” Connection connection = DriverManager.getConnection(url.toString());
  • 11.
  • 12.
  • 13.
  • 14.
  • 15. public interface ResultHandler { void handle(ResultSet result) throws SQLException; }
  • 16. public static int execUpdate(Connection connection, String update) { Statement stmt = connection.createStatement(); stmt.execute(update); int updated = stmt.getUpdateCount(); stmt.close(); return updated; } execUpdate(connection, "create table users (id bigint auto_increment, name varchar(256), primary key (id))"); execUpdate(connection, "insert into users (name) values ('tully')");
  • 17. public interface ResultHandler { void handle(ResultSet result) throws SQLException; } private static void execQuery(Connection connection, String query, ResultHandler handler){ Statement stmt = connection.createStatement(); stmt.execute(query); ResultSet result = stmt.getResultSet(); handler.handle(result); result.close(); stmt.close(); }
  • 18. String query = “select * from users where name = ‘tully’”; execQuery(connection, query, new ResultHandler(){ public void handle(ResultSet result) throws SQLException { result.next(); System.out.append("User: " + result.getString("name") + 'n'); } });
  • 19.
  • 20.
  • 21. public void execUpdate(Connection connection, String[] updates) { try { connection.setAutoCommit(false); for(String update: updates){ Statement stmt = connection.createStatement(); stmt.execute(update); stmt.close(); } connection.commit(); } catch (SQLException e) { try { connection.rollback(); connection.setAutoCommit(true); } catch (SQLException ignore) {} } }
  • 22. public void execUpdate(Connection connection, Map<Integer, String> idToName) { try{ String update = "insert into users(id, user_name) values(?, ?)"; PreparedStatement stmt = connection.prepareStatement(update); for(Integer id: idToName.keySet()){ stmt.setInt(1, id); stmt.setString(2, idToName.get(id)); stmt.executeUpdate(); } stmt.close(); } catch (SQLException e) { e.printStackTrace(); } }
  • 23. public interface TResultHandler<T> { T handle(ResultSet resultSet) throws SQLException; } public class TExecutor { public <T> T execQuery(Connection connection, String query, TResultHandler<T> handler) throws SQLException { Statement stmt = connection.createStatement(); stmt.execute(query); ResultSet result = stmt.getResultSet(); T value = handler.handle(result); result.close(); stmt.close(); return value; } }
  • 24. TExecutor execT = new TExecutor(); String query = “select user_name from users where id=1”; String name = execT.execQuery( connection, query, new TResultHandler<String>(){ public String handle(ResultSet result) throws SQLException { result.next(); return result.getString("user_name"); } }); System.out.append("User: " + name + 'n');
  • 25.
  • 26.
  • 27. public class UsersDataSet { private long id; private String name; public UsersDataSet(long id, String name){ this.id = id; this.name = name; } public UsersDataSet(String name){ this.id = -1; this.name = name; } public String getName() { return name; } public long getId() { return id; } }
  • 28.
  • 29. public interface UsersDAO { UsersDataSet get(long id) throws SQLException; UsersDataSet getByName(String name) throws SQLException; void add(UsersDataSet dataSet) throws SQLException; void delete(long id) throws SQLException; }
  • 30.
  • 33.
  • 35. 38. JDBC API. 39. class Connection из JDBC API. Задачи которые решает Connection. 40. Dependency Injection. Использование при работе с базами данных. 41. class Statement из JDBC API. Задачи которые решает Statement. 42. class ResultSet из JDBC API. Обработка ответа от базы. 43. DataSet (элемент ORM). 44. DAO (элемент ORM).
  • 36.
  • 37. 1. История и особенности языка Java. 2. Платформа Java. Java Editions. GC, JVM, JDK, JRE. ByteCode. 3. Правила наименований. Запуск java приложений. 4. class Object и class Class<?>. 5. Простые типы в Java. Классы обертки простых типов. 6. Generic programming в Java. 7. Коллекции в Java. Iterator, Iterable. 8. Processes and Threads. 9. Interface Runnable. class Thread. Методы start() и run(). 10. Методы класса Thread: sleep(), interrupt(), join(). 11. Ключевые слова volatile и synchronized. 12. Atomic variables. 13. Проблемы многопоточного доступа к данным. Race condition. 14. Методы класса Object: wait(), notify() и notifyAll(). 15. Плюсы и минусы многопоточных приложений. 16. Способы взаимодействия потоков. 17. java.util.concurrent 18. MessageSystem. Address и Abonent. 19. Распределение классов по пакетам. Циклические зависимости. 20. Архитектура игрового сервера. 21. Процесс работы игрового сервера, репликация. 22. Виды тестирования. 23. GC. Виды GC. Параметры GC. 24. Работа со случайными числами. 25. Singleton и Context. 26. Events, подписка на события. 27. Exception и Throwable. 28. Передача функции в библиотеку. Callback. 29. Анонимные классы. 30. Работа со временем и датой. Unix time. Locale. 31. I/O Streams. Потоки байт и потоки символов. 32. Сериализация/десериализация. Interface Serializable. 33. Ключевое слово transient. 34. Reflection. Роль reflection в сериализации. 35. SAX парсер. 36. DOM парсер. 37. ResourceFactory. Роль ресурсов в игре. 38. JDBC API. 39. class Connection. 40. Statement. 41. ResultSet. 42. DataSet. 43. DAO. 44. Annotation. 45. Object Relational Mapping. 46. Frontend. 47. MessageSystem иерархия наследования. 48. Game Mechanics. 49. Resource System. 50. Database System.